Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-02-2004, 21:30   #1 (permalink)
LiquidFrames
 
Registriert seit: Jun 2003
Beiträge: 412
Hittest <----schrott

gibt es ne efektive methode für ne collisionsabfrage?
hit test is dumm weil man da nur ein punkt mit einem movieclip testen kann.

mann kann zwar 2 mk miteinander vergleichen, dann aber ohne dieses shapeflag oder so

ich gerade das spiel:
www.dc-liga.de/lander.swf
(sieht billig aus, ... isses auch^^)

momentan vergleiche ich immer 2 punkte mit dem level mk:
1-den rotmarkierten
2-der punkt wo der mittlere düsenstrahl rauskommt

das is ziehmlich beschissen.

kennt jemand zufällig ne methode ne richtige colisionsabfrage zu machen? (die bei diesem genere sinn macht)


das wäre geil, ich grüble nähmlich schon 2 tage an diesem problem, und durch diese 2 punkte sache wirds immer schwerer neue futurs zu progen.

(praktisch wärs wenn es erkennt von wo mann anstößt^^)


ps:
es wäre zwar geil, aber ich erwarte hier nochnichmal ein vollen code, ideen würden auch helfen^^
(weil in einem anderen forum schonmal jemand richtig zugeschissen wurde,
nach dem motto, "willst ja nur kostenlos dein script!!")

cu
Hugo1of2 ist offline   Mit Zitat antworten
Alt 17-02-2004, 23:47   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
jeden flächen-punkt eines objektes mit jedem flächen-punkt eines anderen objektes zu testen wäre "vollkommen" (moment, ich hab noch nicht fertig geschrieben) langsam :-) zumal flash bzw. aktionscript nicht unbedingt DIE entwicklungsumgebung für aktion-spiele ist. den meister erkennt man in der bescheidenheit!
dein ufo-ding (?) inklusive düsenstrahl ist fast kreisförmig. also interessiert davon nur der mittelpunkt.
von deinem gelben was-es-auch-immer-sein-mag ding machst du eine kopie. diese flächen erweitert du um den radius des ufos (menü modifizieren/ form/ füllung erweitern) = kollflaeche. ab dafür in ein mc und das auf der bühne unsichtbar machen.
jetzt kannst du mit dem "schrott-befehl" hittest den mittelpunkt des ufos mit der kollflaeche testen.

noch genauer?
decke dein ufo mit z.b. 3 gleichgrossen kreisen ab. selbes verfahren wie eben (fläche um den radius dieser kreise erweitern), dann halt mit 3 test's. hält sich performensmässig auch noch im rahmen.


"..praktisch wärs wenn es erkennt von wo mann anstößt.."
letzte position zur aktuellen position = die richtung
da wo der hittest positiv ist, da hat er angestossen!?
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 18-02-2004, 00:04   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2001
Ort: Köln
Beiträge: 106
Die Kollisionabfrage von Flash ist eigentlich ziemlich prima, weil recht schnell... und die lässt Dir über die Punktabfrage doch alle Möglichkeiten.
Dein Raumschiff hat soch eine sehr geometrische Form. wenn man's nicht zu genau nimmt, ist das gerade mal nen Dreieck. Und wenn das nicht reicht machst du eben ein 5-oder 6-Eck raus.
Bau Dir einen MovieClip auf gleicher Ebene wie Dein Schiff. Darin platzierst Du nun Deine Kollisionspunkte - entweder wirklich in Form von MovieClips, was aber langsam ist, oder in Form von Koordinaten.
Dei fragst Du nun jedes Frame ab... und fertig. Dadurch, dass Du so weisst, welcher Punkt mit dem ZielClip kollidiert ist, hast Du sogar ne lokalisierte Kollisionsabfrage. Ist doch super...?! Was gibt's denn da zu mosern?

Ich mach das bei meinen Spielen in aller Regel so, dass ich in meine SpriteClips kleine Kreuz-MovieClips plaziere, um die Kollsionspunkte grafisch auf der Bühne editieren zu können. Wenn ich die Sprites dann auf die Bühne bring (onLoad) übertrage ich die Koordinaten meiner Kreuzchen in ein Array, dass dann als Kollisionspunktliste fungiert. Die nun überflüssigen Clips werden entfernt und der Rest läuft über eine Kollisionsabfrage mit Punkt und ZielClip.

Eine Alternative ist, den abzufragenden Clip mit mehreren rechteckigen Clips "nachzumalen" (und dann !_visible zu schalten), die dann Clip2Clip gecheckt werden können. In dem Fall macht es Sinn, ein mehrstufiges Kollisionssystem zu verwenden, das verschieden grob ist, damit das alles nicht zu langsam läuft.

Bei deinem Spiel würde ich das kombinieren - mindestens den ZielClip (die Landschaft) in mehrere Clips unterteilen und nur jeweils die Region abfragen, in der das Schiff sich gerade befindet. das birngt schonmal einiges.
Dem Schiff würd ich dann noch einen einzelnen Clip für eine grobe Clip2Clip-mit der Landschaftsregion spendieren. Wenn da dann eine Kollision vorliegt, zum PunktArray für Genauigkeit und Lokalisierung übergehen. Dann läuft das alles fix... und genau. ;-)
__________________
http://www.rumbke.de
leif ist offline   Mit Zitat antworten
Alt 18-02-2004, 13:51   #4 (permalink)
LiquidFrames
 
Registriert seit: Jun 2003
Beiträge: 412
erstmal danke für die netten antworten^^

dein tip mit den kreuze-->array-->löschen find ich gut, so werd ichs erstmal machen^^,

ich werde wohl 4 punkte machen
1)mitte (triebwerk)
2)spitze
3+4) linke und rechte ecke

ich denke das ist genau genug für ein minispiel^^
und die performens wird schon stimmen

wenn nicht kann man ja sagen das in jedem frame nur einer der punte gescheckt wird, und dann halt alle nacheinander

ich hoffe das geht so^^
Hugo1of2 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele