| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Sep 2009
Beiträge: 7
| Minigolf Winkelberechnung bei rundungen
Hallo, ich bin gerade dabei ein Minigolfspiel zu programmieren. Es funktioniert soweit auch. Ich kann mit der Maus die Stärke und die Richtung (per Winkel) beeinflussen und der Ball startet dann auch. Jetzt ist die Frage wie mache ich das mit der Kollisionsabfrage? Ich habe mit Photoshop mir eigene Vorlagen gemacht für meine Bahnen, allerdings sind die nicht gerade sondern mehr oder weniger zufällige. Hat jemand von euch Ahnung davon, wie ich nun den Ausfallswinkel berechnen kann? Ich habe eine Vorlage für Actionscript 1&2 gefunden aber damit komme ich leider nicht klar kann nur AS3. Grüße! |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Oct 2004 Ort: Berlin
Beiträge: 478
|
Hallo, ich kann Dir hier leider keine xy Lösung bzgl. Kollisionserkennung für dein Spiel bieten. Ist ja vielleicht auch nicht der Sinn der Sache. Grundsätzlich: Es gibt eine ganze Reihe von verschiedenen Kollisionserkennungen. Welche davon sinnvoll ist, lässt sich nur je nach Spiel entscheiden. Wenn Kollisionserkennung X,Y,Z nicht ausreicht, ist natürlich die ultimative Lösung eine pixelbasierte Kollisionserkennung, die aber auch sehr viel Leistung verschlingt. Das Thema Kollisionserkennung ist ein ganz wesentliches für die Spieleprogrammierung u.a. mit Flash. Vermutung: Bei einem Minigolf-Spiel solltest Du auch mit einer nicht-pixelbasierten Kollisionserkennung gut fahren können, soweit deine Objekte geometrisch sind. Vielleicht hat jemand noch eine bessere Antwort - ich bin kein Spieleprogrammierer.
__________________ Adobe Flash CS5: Das Handbuch Webdesign und Webentwicklung: medianetic Gesendet von meinem Windows-PC. Blog-relaunch: http://www.blog.medianetic.de |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jan 2003
Beiträge: 172
|
Hmmmm wäre schön wenn es so einfach wäre. Wie oben schon erwähnt ist eine pixelbasierte Lösung wohl am besten, aber auch am hardwareintensivsten für eine Kollisionsabfrage. Daher würde ich empfehlen (Wenn die Bahnen eckig sind, also keine runden Ecken haben) einfach Movieclips dort hinzusetzen (wie eine Bande beim Billard) Dann kannst du überprüfen ob der Ball eine Bande berührt. Wie das mit dem ein- und ausfallswinkel aussieht weiss ich leider nicht mehr. Im Internet gibt es sicher noch Beispiele. Es gibt auch gute Bücher über Flash und Gameprogrammierung. Leider viele in englisch. Oder suche mal nach ähnlichen Beispielen (Arkanoid) oder wie das alte Game heisst, du weisst schon, das wo man einen Balken steuert und mit der Kugel Klötzchen treffen muss. Dort gilt auch: Ausfallswinkel = Einfallswinkel *= -1
__________________ - Portfolio |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.109
| H.G.Seib -> Spiele Minigolf (4) AS2 und bassiert auf tiles. also die bahn kann beliebig aus quadraten zusammen gesetzt werden. (wer AS3 kann, der sollte eigentlich auch einen AS2-script lesen können.) H.G.Seib -> PinLines-Engine, nur zum ansehen (kein quellcode) man kann durchaus auf rundungen verzichten. ein polygon (viele kanten) tut's auch. und viel mathe ;-) H.G.Seib wenn dir ein polygon zu eckig ist, dann ergänze noch kreise. grundsätzlich gehen auch splines und andere kurven. die zu berechnen ist aber höchst aufwendig (will sagen, für ein mini-golf eigentlich zu viel aufwand): H.G.Seib -> berührungen
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (01-09-2010 um 15:55 Uhr) |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 546
|
Um Lineare Algebra und ein paar Winkelfunktionen wirst du beim Selbermachen nicht herumkommen. Die Reflexionsrichtung r (Einfallswinkel = Ausfallswinkel) wird anhand der Oberflächennormalen n (Richtung senkrecht von der Oberfläche weg) und der Einfallsrichtung v (Bewegungsrichtung des Balls) berechnet, wobei die Richtungen als normalisierte Vektoren (Länge=1) gespeichert sein müssen: r=-2*(v.dot(n))*n+v Wenn dich Details interessieren: Reflexion ? DGL Wiki in AS z.B. so: ActionScript:
Um die Kollision pixelgenau zu erkennen und dabei noch die Oberflächennormale zu bestimmen, dazu würde ich etwa folgendes versuchen: - einen virtuellen Kreis aus n Punkten rund um den Ball bilden und diese Punkte per hitTestPoint (bzw. getPixel) abtasten. - Wenn mindestens einer der Punkte true zurückgibt, berührt der Ball eine Grafik. - der Mittelwert aller nicht getroffenen Punkte gibt die Richtung der Oberflächennormalen an. - je größer n, desto genauer Leider wird es da auch Sonderfälle geben (z.B. sich exakt gegenüberliegende Punkte ergeben true bzw. false -> die Mittelrichtung ist 0). Das müsste man mal experimentell bestimmen wie man diese am besten erkennt und behandelt. Am sichersten wäre da wohl eine Binärmatrix mit gespeicherten Lösungen. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash 2] Minigolf in Flash | moku1990 | Flash Einsteiger | 5 | 04-02-2009 18:08 |
| Grundlegende Frage zu Minigolf (Wände erstellen) | dhouzer | Spielkonzepte und Spieleprogrammierung | 5 | 11-01-2006 13:08 |
| Minigolf physics | H.Storm | Spielkonzepte und Spieleprogrammierung | 2 | 01-04-2005 19:04 |
| Rundungen der Grafik | andyowl | Flash MX | 8 | 11-05-2004 17:28 |
| http://www.electrotank.com/lab/miniGolf.html | celcius | Coolsites | 9 | 05-04-2002 20:45 |