事情是这样的:我有一个使用 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 的解决方案,但我想知道是否有更简单的解决方案来解决这个问题。