我有一个碰撞反应方法挣扎,即时写在actionscript 3,现在很长一段时间,我希望有人可以解释这个代码的含义,因为我只修改了它。我没有从头开始写。我还使用碰撞检测工具包来查找碰撞发生的位置。
我试图做的是让球(它是你用键盘在屏幕上移动的对象)击中墙壁或物体,它不会穿过墙壁或物体。AS3碰撞反应的游戏
我对此的理解是,您正在找到发生碰撞的角度,然后您需要找到相邻的角度,这是新矢量,并通过重叠来推回物体,但是我不知道这个功能如何工作,例如什么是
vx0:Number = ball.vx * cos + ball.vy * sin;
找到?另外我不想让球加速,我希望它的速度是恒定的,直到它碰到一个物体。反向搜索这个数组也会更快吗?
- 我很欣赏任何花时间尝试和帮助我的人,如果我有一些拼写错误,我很抱歉。
for(i = 0; i < collisions.length; i++)
{
var collision:Object = collisions[i];
var angle:Number = collision.angle;
var overlap:int = collision.overlapping.length;
var ball:Ball = collision.object1;
var sin:Number = Math.sin(angle);
var cos:Number = Math.cos(angle);
var vx0:Number = ball.vx * cos + ball.vy * sin;
var vy0:Number = ball.vy * cos - ball.vx * sin;
vx0 = .4;
ball.vx = vx0 * cos - vy0 * sin;
ball.vy = vy0 * cos + vx0 * sin;
ball.vx -= cos * overlap/ball.radius;
ball.vy -= sin * overlap/ball.radius;
}
如果速度是你的问题,那么[迭代向后](http://stackoverflow.com/questions/1950878/c-for-loop-indexing-is-forward-indexing-faster-in-new-cpus/1951271 #1951271)可能不会明显加快,甚至可能会稍微慢一点 - 您需要基准您的具体情况以了解更多信息 – Cameron 2011-02-06 02:43:37
非常感谢您的评论。我会牢记这一点。 – 2011-02-06 11:03:09