我最近开始用 XNA 开发一个 Windows Phone 游戏。我有问题,因为您可能已经猜到了碰撞检测。在查找了有关可以实现的所有类型的教程后,我决定我将使用基本的矩形碰撞检测。我有一个旋转精灵和一个每次在 Update() 方法中计算边界框的方法,所以我知道它的边界框在哪里,然后我只需检查框的所有线与其他精灵的所有线之间的交点盒子。但是由于我的盒子看起来是方形的,而我的旋转精灵的纹理是矩形的,所以我想缩放边界框,使其更接近纹理的大小。这是我计算旋转边界框角的方法:
double baseAngle = Math.Atan(this.Height / this.Width);
double len = Math.Sqrt(this.Height * this.Height / 4 + this.Width * this.Width / 4);
Vector2 tr = new Vector2((float)(Math.Sin(baseAngle + this.Rotation) * len) + this.Position.X, (float)(Math.Cos(baseAngle + this.Rotation) * len) + this.Position.Y);
Vector2 tl = new Vector2((float)(Math.Sin(Math.PI - baseAngle + this.Rotation) * len) + this.Position.X, (float)(Math.Cos(Math.PI - baseAngle + this.Rotation) * len) + this.Position.Y);
Vector2 bl = new Vector2((float)(Math.Sin(Math.PI + baseAngle + this.Rotation) * len) + this.Position.X, (float)(Math.Cos(Math.PI + baseAngle + this.Rotation) * len) + this.Position.Y);
Vector2 br = new Vector2((float)(Math.Sin(2 * Math.PI - baseAngle + this.Rotation) * len) + this.Position.X, (float)(Math.Cos(2 * Math.PI - baseAngle + this.Rotation) * len) + this.Position.Y);`
任何帮助,将不胜感激。谢谢