【发布时间】:2011-06-02 23:54:54
【问题描述】:
最近我正在阅读 XNA 4.0 Game Development by Example 一书。在其中一章中,这段代码是为在碰撞检测后反弹(反射)对象而编写的:
private void BounceAsteroids(Sprite asteroid1, Sprite asteroid2)
{
Vector2 cOfMass = (asteroid1.Velocity + asteroid2.Velocity) / 2;
Vector2 normal1 = asteroid2.Center - asteroid1.Center;
normal1.Normalize();
Vector2 normal2 = asteroid1.Center - asteroid2.Center;
normal2.Normalize();
asteroid1.Velocity -= cOfMass;
asteroid1.Velocity = Vector2.Reflect(asteroid1.Velocity, normal1);
asteroid1.Velocity += cOfMass;
asteroid2.Velocity -= cOfMass;
asteroid2.Velocity = Vector2.Reflect(asteroid2.Velocity, normal2);
asteroid2.Velocity += cOfMass;
}
任何人都可以用一些图表或一些易于可视化的示例来解释这段代码吗?我无法可视化此代码。如果有人知道任何书可以让我学习这种对游戏编程有用的物理知识,那么我也将非常感激。
【问题讨论】:
标签: c# xna collision-detection game-physics