我现在很长时间以来在 actionscript 3 中编写碰撞响应方法,我希望有人可以解释这段代码的含义,因为我只修改了它。我没有从头开始写。我也在使用碰撞检测工具包来查找碰撞发生的位置 我试图做的是让Ball(你用键盘在屏幕上移动的物体)击中墙壁或物体,它不会穿过墙壁或物体。
我对此的理解是你找到碰撞发生的角度,然后你需要找到相邻的角度,这是新的矢量,然后通过重叠来推回物体,但我不了解此功能如何工作,例如
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 :(得分:4)
基思彼得斯有一本名为Foundation Actionscript 3.0 Animation: Making Things Move的精彩书。
第9章介绍了您遇到问题的主题。
此页面特别有帮助。
他使用自制三角碰撞测试,但你应该能够用碰撞检测套件中内置的功能和属性替换他的距离检查。