2013-02-23 121 views
0

好的,我已经阅读了一些关于基础平台游戏创作的文章,人们说这是最难的部分 - 在高速下进行正确的碰撞。事实上,即使我有60fps,每个刻度像50-100像素移动的物体也很难追踪。问题是,如果它碰到墙,它会穿过它,检测到太远,并将对象返回到速度为0(或跳动)的墙旁边的定义点。但是如果我在舞台中间有一个5像素的墙,即使在低速情况下也可能会错过碰撞。是的,你会说“做2个区域,检查是否有物体在一个区域,另一个区域是整个hitTest区域从中返回”,但是如果我需要随机绘制的墙壁迷宫怎么办? 什么是使薄壁物体无法通过的好方法?AS3障碍hitTest

想到一些成熟的东西,我记得恶魔城和银河战士,它不是AS3,但是,也许你知道他们是如何做得如此流畅?好的FPS?预测碰撞?还是没有人像疯狂的子弹一样疯狂的速度?

在开始编码之前,我真的可以使用一些想法。我希望至少知道我正在朝着正确的方向前进,即使这很困难。最终不要结束1000行,不记得单个对象的CPU负载@ 95%XD我现在的猜测是在对象的右上,左上,下4个不可见块,并分别统计每个侧面的碰撞。但它可能会在角落里变得丑陋。 8块可能?

回答

1

目前,您正在检查物体是否与框架发生相位的确切时刻相交,但是您真的想知道对象有无与最后一帧和现在之间的墙相交。你可以想象一个线条在对象之前和现在的位置之间,所以基本上你需要检查这条线是否与墙的线相交。

这是相当古老,但tonypa有一个很好的教程here它覆盖了所有的基础知识。

+0

是的,我已经做到了。现在,我必须经历最难的部分 - 找出它为什么仍然会出现毛刺并将物体粘在墙上。它偶尔会发生,我检查了20次的代码必须在ANY碰撞之前停止,如果碰撞发生,就不要移动它。如果是这样,请将其向相反的方向移动。我想我必须弄清楚Flash如何绘制区域,以及它是否使得它们不是我期望的。 o_o像...我的符号的宽度为30像素,但是当我编辑它时,它的像素为30.60像素。我不知道一个程序可能像分裂这样的像素XD – SherWood 2013-02-25 07:50:51

+0

有趣的网站一样傲慢,感谢分享。 – SherWood 2013-02-25 07:59:41