我有一個碰撞反應方法掙扎,即時寫在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