首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3 -利用帧间间隙进行碰撞检测

AS3 -利用帧间间隙进行碰撞检测
EN

Stack Overflow用户
提问于 2012-10-08 16:42:50
回答 1查看 719关注 0票数 2

事情是这样的:我有一个球用Tweens弹跳,我想检测球和平台之间的碰撞(只有当球掉下来的时候)。

但是,我的解决方案是测试ENTER_FRAME循环中的碰撞,所以当球速度过高时,在x帧下,球在平台上,在x+1框架下,球位于平台下面,所以我的循环从不检测碰撞(因为球和平台从来没有真正的碰撞)。

这是我的球的跳跃法:

代码语言:javascript
复制
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循环中执行的内容:

代码语言:javascript
复制
for each (var platform:Platform in platforms) 
{
    if (ball.hitTestObject(platform) &&  ballPreviousY < ball.y)
        ball.jump();
}
ballPreviousY = ball.y;

我已经开始研究使用物理引擎Box2D的解决方案,但是我想知道是否有一个更简单的解决方案来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2012-10-13 06:42:15

这是碰撞检测中的一个常见问题--小而快速的物体通过薄薄的障碍物。你要找的是扫描测试

与测试两个静态形状之间的交集不同,我们可以创建新的形状,方法是沿着它们的轨迹扫描原始形状,并测试这些扫描形状之间的重叠。

来自N教程A-快速移动对象,(如果您对碰撞算法有更多的兴趣,我建议阅读它们的所有内容)。

例如,如果你有一个1px乘1px的平方,并且它沿着x轴以每帧5 6px的速度移动,你会想要扭曲你的方块,这样它就变成了一个6px乘1 6px的矩形来进行碰撞测试。捕捉到任何会击中下一帧的东西,但不会有更多的。

圆圈比较困难,因为当你拉伸它们时,它们就变成了椭圆(这很难检查碰撞)。如果您想要走椭圆路线,请参阅这个答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12785867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档