AS3で動作していないhitTestObject衝突検出!
-
19-09-2019 - |
質問
私はプラットフォーマーゲームを作成しようとしていますし、私はそれが「プラットフォーム」をヒットしたときに「player1」ストップを作るしようとしています。ここに私のコードはこれまでのところ、
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)が正常に動作しないと、常に「それ以外」ルートを取るでしょう。
助けてください!
解決
私のために正常に動作します投稿としてコード。私は愚かな過ちの他のいくつかの種類を探したい - たとえば、あなたがコピーしてムービークリップを貼り付けた場合、あなたはあなたの参照が1あなたに解決しないことがあり、その場合には、「プラットフォーム」という名前のステージ上に複数のクリップを、持っているかもしれませんつもり。またはそれらの線に沿って何か他ます。
それを追跡するには、呼び出してみます:
trace( player1.getBounds(stage) );
trace( platform.getBounds(stage) );
これはフラッシュはそれらのクリップの境界ボックスがあると考えていることを教えてくれます。私の推測では、コードは、あなたが期待するもの以外のものを返し、バグがどこにあるという矛盾を解決することは表示されるということです。
所属していません StackOverflow