hitTest()? Versuch an Shooter-Game

Grulf

Grünschnabel
Abend allerseits,
ich versuche mich mit Flash gerade an einem Shooter.Es existiert der Hintergrund,ein Strichmännchen und das Zielfernrohr.Der Cursor ist exakt auf die Mitte des Zielfernrohres ausgerichtet.Nun will ich überprüfen,ob die Mitte des Zielfernrohres auf den Movieclip ausgerichtet ist,wenn man klickt bzw. "schießt".
Dazu hatte ich erst diesen Code:
(Auf dem Movieclip "target",dem Strichmännchen)
Code:
onClipEvent(enterFrame){
onMouseDown = function(){
	if(this.hitTest(_root.scope._x,_root.scope._y,true)){
this.removeMovieClip();
	}
}
}
Leider funktioniert dieser Code nicht (Keine Fehlermeldung,doch die Praxis versagte).Also rüber zur nächsten Version,vielleicht hatte ich zu kompliziert gedacht?
Code:
onClipEvent(enterFrame){
onMouseDown = function(){
this.removeMovieClip();
}
}
Doch in der Praxis klappt dieser Code auch nicht.Was mache ich falsch?

Gruß,
Grulf
 
Hallo,
du benutzt Formatierungen aus der Steinzeit und das auchnoch falsch - richtig wäre ein

Code:
_root.meinZiel.onPress = function() {
 if(this.hitTest(.....)) {
  ...
 }
}

bzw, vielleicht sogar besser:

Code:
_root.onEnterFrame= function() {
 if(meinZiel.hitTest(.....)) {
  ...
 }
}

Für mehrere Ziele sollte eine for-Schleife und eine entsprechende Benennung der Ziele á la "ziel1" bis "ziel999" etc. helfen.

Gruß
.
 
Moin,
erst einmal Danke für die Hilfe.
Aber das ganze funktioniert leider nicht.
Aktueller Code (Auf "target"):
Code:
onClipEvent(enterFrame){
_root.target.onPress = function() {
 if(_root.target.hitTest(_root.scope)) {
  trace("test");
 }
}
}

Ansonsten habe ich schon ehtliche Varianten probiert,ebenfalls ohne Fortschritt.

Gruß,
Grulf
 
Grulf,
wieso GENAU steht der Code in einem onClipEvent(enterFrame)? Denk man scharf nach - so definerst du mit jedem Frame, also mehrmals pro Sekunde, eine neue gleiche Funktion für das Anklicken des Ziels. Ein einfaches

Code:
_root.target.onPress = function() {
 if(this.hitTest(_root.scope)) {
  trace("test");
 }
}

wird reichen und funktioniert, zumindest bei mir, einwandfrei. Es muss auf einem Schlßsselbild liegen, und nicht auf einem Movieclip. Wenn es jetzt immernoch nicht funktioniert, poste bitte einmal die fla - denn dann wird das ganze wohl an verschachtelten MCs liegen - du musst an der Stelle _root.taget den gesamten Pfad zu dem Target-Movieclip angeben, genauso wie bei _root.scope.

Gruß
.
 
Ähem^^
Funktioniert übrigens immer noch nicht,hier ist die .fla ...:

Gruß,
Grulf
 

Anhänge

  • scope.fla
    64 KB · Aufrufe: 52
Du hast den Movieclips keine Instanznamen gegeben - und ohne diese weiß Flash nicht, welche Movieclips mit "target" und "scope" gemeint sind. Instanznamen sind die Namen, die man links im Einstellungen-Dialog einstellt.

Evtl. wäre _root.onMouseDown = fuction hier besser als _root.target.onPress - denn letzteres wird erst ausgeführt, wenn man genau auf das Männchen klickt und dann ist das Fadenkreuz logischerweise sowieso auf ihm drauf.
 
Ups!
Da sind es die einfachen Dinge,die man plötzlich vergisst :/
Dankeschön^^

Und übrigens,das mit dem "onPress" stimmt schon so.
 
Zurück