0

나는 platformer 게임을 만들려고하고 있는데, "platform1"에 부딪 힐 때 "player1"을 멈추게하려고합니다. 여기에 지금까지 내 코드의 hitTestObject 기능 (enterFrameHandler)가 제대로 작동하지 않고 항상 "다른"경로를 취할 것입니다 그러나hitTestObject 충돌 감지가 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; 
    } 
    } 

이다.

도와주세요!

+0

정보를 더 제공 할 수 있습니까? 그것이 나를 위해 일하기 때문에. player1이라는 MovieClip과 platform이라는 벽돌을 만들고 히트를 감지합니다. – Allan

답변

1

게시 된 코드가 정상적으로 작동합니다. 예를 들어 무비 클립을 복사하여 붙여 넣은 경우 무대에 "플랫폼"이라는 클립이 두 개 이상있을 수 있습니다.이 경우에는 참조가 해당 클립으로 해결되지 않을 수 있습니다. 의도한다. 아니면 그 라인을 따라 뭔가 다른. 플래시가 해당 클립의 경계 상자가 생각하는 곳을 알려줍니다

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

을 :

는 호출 시도를 추적합니다. 제 추측으로는 코드가 예상했던 것 이외의 다른 것을 반환 할 것이고 그 불일치를 해결하면 버그가 어디에 있는지 알 수 있습니다.

+0

ooooooh ok 나는 당신이 couldnt한다라는 것을 알고있는 didnt는 플랫폼에서 이름이 지어지는 플랫폼에 관한 것보다 많은 것을 가지고있다! 감사! –

+0

네가 그렇게한다면, "플랫폼"을 가리킬 때 플래시가 그 중 하나를 선택하기 만하면된다. 행운을 빕니다! – fenomas