kollisionen

TimN

Erfahrenes Mitglied
hi

ich mach grad ein kleines Spiel, es gibt einen Ball und ein paar Blöcke, an denen der Ball abprallen soll.
richtung des balls:
speedx
speedy

Die Kollisionen mache ich nicht mit hittest, weil mir das zu langsam ist. ich verwende 2 if Abfragen, aber irgendwie ist das auch nicht so super.
Kann mir jemand sagen, wie das (ActionScript mäßig) ungefähr aussieht wenn der Ball an einem Stein (an allen Seiten) abprallen soll?
 
Zuletzt bearbeitet:
Hi,

ausser hittest gibt es eigentlich nur noch die Methode, einen Array anzulegen, welcher sämtlichste Koordinaten des Randes des statischen Objektes beinhaltet und einen Array mit allen Koordinaten des bewegten Obejktes ständig mit diesem zu vergleichen - das ist aber langsamer und resourcenfresender als hittest, auch was du mit 2 if Abfragen meinst verschliessst sich meiner Logik....


B
 
das was ich mit den 2 if abfragen meine ist folgendes:

if((ball._x > stonex-15+8)&&(ball._x < stonex+30-8)){
if((ball._y > stoney-15)&&(ball._y < stoney+30))
{

mein eigentliches problem ist aber das abprallen
 
Hi,

hmm, sowas habe ich eigentlich schon ein paarmal gemacht, aber da ich bislang keinen wirklich "professionellen" Algorithmus kenne, war der Code bisher immer recht verwurschtelt, mit vielen verschachtelten Abfragen und nicht wirklich "Posting-tauglich". ;)

Generell gehe ich so vor:

- Kollision überprüfen (bei Begrenzungsboxen in etwa, wie Du es hast - oder bei eher runden Formen über den Radius (Polarkoordinaten).

- dann schauen, ob ich mich eher in der untern oder oberen (bzw. linken/rechten) Hälfte des Zielklips (mit dem ich kollidiere) befinde (z.B. Mittelpunkte vergleichen). Anhand dessen kann ich sehen, in welche Richtung ich abprallen muss.

Nachteil: Bewege ich mich sehr schnell (so dass sich mein Sprite z.B. bei jedem Frame um so viele Pixel bewegt, wie mein Hindernis breit ist), kann ich das Hinderniss "durchtunneln" - das muss also auch noch abgefragt werden. Klappt im Endeffekt recht gut bei Kollision kleiner Sprites mit rechteckigen Formen, aber es gibt sicher elegantere Lösungen. Ich würde mich einfach mal auf diversen Spiele- und Codingforen umsehen - vielleicht findest Du einen netten Code.

Gruß
.
 
Zurück