0

私はplatformerゲームを作成しようとしていて、 "platform1"に当たったときに "player1"を停止しようとしています。ここに私のコードは、これまでのところ、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; 
    } 
    } 

hitTestObject機能(enterFrameHandler)が正常に動作しませんが、常に「それ以外」のルートを取るです。

助けてください!

+0

これ以上の情報を提供できますか?それは私のために働くからです。私はplayer1と呼ばれるMovieClipとplatformというレンガを作成し、ヒットを検出します。 – Allan

答えて

1

投稿されたコードはうまく動作します。私は、映画クリップをコピーして貼り付けた場合など、ステージ上に「プラットフォーム」という名前のクリップが複数ある可能性があります。意図する。またはそれらの行に沿った何か。それを追跡する

、呼び出してみてください:フラッシュはそれらのクリップの境界ボックスがあると考えていることを教えてくれます

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

。私の推測では、コードはあなたが期待していたもの以外の何かを返し、その不一致を解消するとバグがどこにあるのかを示します。

+0

ooooooh ok私はあなたがクリップという名前のプラットフォームより多くを持つことができなかったことを知りませんでした!ありがとう! –

+0

そうなら、あなたが「プラットフォーム」を参照するときに、フラッシュはそれらのうちの1つを選ぶだけです。がんばろう! – fenomas

関連する問題