2011-02-06 92 views
1

我有一个碰撞反应方法挣扎,即时写在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; 
     } 
+0

如果速度是你的问题,那么[迭代向后](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

+0

非常感谢您的评论。我会牢记这一点。 – 2011-02-06 11:03:09

回答