0

Ich versuche ein Platformer-Spiel zu erstellen und ich versuche "Player1" zu stoppen, wenn es eine "Plattform" trifft. hier ist mein Code so weit,hitTestObject Kollisionserkennung funktioniert nicht in as3!

gotoAndStop("gameStart"); 

import flash.display.MovieClip; 
import flash.events.*; 
import flash.ui.Keyboard; 
import flash.ui.*; 


import flash.utils.Timer; 
import flash.events.TimerEvent; 

player1.gotoAndStop("nothing"); 


//private var speed:Number = 0; 
//private var maxspeed:Number = 4; 

var myTimer:Timer = new Timer(10,0); 


stage.focus = this; 


player1.addEventListener(Event.ENTER_FRAME,enterFrameHandler); 
/* 
myTimer.addEventListener(TimerEvent.TIMER,someFunction); 



myTimer.start(); 

function someFunction(event:TimerEvent) { 
player1.y += 2; 


} 
*/ 

function setup() { 
stage.addEventListener(KeyboardEvent.KEY_DOWN, reactToArrowKeys); 
} 
setup(); 


function reactToArrowKeys(keyEvent:KeyboardEvent) { 

if (keyEvent.keyCode == 37) { 

    if (player1.x > 0) { 
    player1.x -= 5; 
    } 

} else if (keyEvent.keyCode == 39) { 

    if (player1.x < 700) { 
    player1.x += 5; 
    } 

} 


} 


function enterFrameHandler(e:Event):void { 
    if (player1.hitTestObject(platform)) { 
    trace("hitting"); 
    } else { 
    player1.y += 4; 
    } 
    } 

jedoch die hitTestObject Funktion (enterframehandler) nicht richtig funktioniert und wird die „else“ Route immer nehmen.

bitte helfen!

+0

können Sie weitere Informationen liefern? weil es für mich funktioniert. Ich habe einen MovieClip namens player1 und einen Brick namens platform erstellt, der den Treffer erkennt. – Allan

Antwort

1

Der Code wie gepostet funktioniert gut für mich. Ich würde nach einem anderen dummen Fehler suchen - wenn Sie zum Beispiel Movieclips kopiert und eingefügt haben, haben Sie möglicherweise mehr als einen Clip auf der Bühne mit dem Namen "Plattform". In diesem Fall wird Ihr Verweis möglicherweise nicht auf den Ihnen zugeordneten aufgelöst wollen. Oder etwas anderes in dieser Richtung.

es aufzuspüren, versuchen Aufruf:

trace(player1.getBounds(stage)); 
trace(platform.getBounds(stage)); 

die Ihnen sagen, wo Blitz die Begrenzungskästen dieser Clips sind denkt. Meine Vermutung ist, dass der Code etwas anderes zurückgibt, als Sie erwarten würden, und das Auflösen dieser Diskrepanz zeigt, wo der Fehler liegt.

+0

ooooooh ok Ich wusste nicht, dass Sie mehr als auf Clip namens Plattform haben könnten! Vielen Dank! –

+0

Ja, wenn Sie das tun, wenn Sie auf "Plattform" verweisen, wählt Flash nur einen von ihnen aus. Viel Glück! – fenomas