2011-02-06 62 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

回答