ここに問題があります: Tweens を使用して跳ねるボールがあり、ボールとプラットフォームの間の衝突を検出したい (ボールが落下している場合のみ)。
しかし、私の解決策はループ内で衝突をテストすることですENTER_FRAME
。ボールの速度が速すぎると、ax フレームではボールがプラットフォームの上にあり、x+1 フレームではボールはプラットフォームの下にあるため、ループは検出されません。衝突 (ボールとプラットフォームが実際に衝突することはないため)。
これが私のボールのジャンプ方法です:
public function jump():void
{
TweenLite.killTweensOf(this);
TweenLite.to(this, jumpSpeed, {y:250, ease:Cubic.easeOut});
TweenLite.to(this, jumpSpeed, {delay:jumpSpeed, y:stage.stageHeight-this.height, ease:Cubic.easeIn, onComplete:jump});
}
そして、これが私のENTER_FRAME
ループで実行されるものです:
for each (var platform:Platform in platforms)
{
if (ball.hitTestObject(platform) && ballPreviousY < ball.y)
ball.jump();
}
ballPreviousY = ball.y;
私はすでに物理エンジン Box2D を使用した解決策に取り組み始めましたが、その問題に対するより簡単な解決策があるかどうか知りたいです。