XNA BoundingBox&起源

时间:2013-07-16 18:09:21

标签: c# xna

我已经看到了关于这个主题的一些答案,但没有一个真的有很多帮助。

很简单,BoundingBox碰撞。当原点设置为0,0时,碰撞发生得很好(至少我想要它)。当我指定玩家到中心的原点(因此它围绕中间旋转)时,碰撞似乎是偏移的,它会在错误的时间检测到碰撞

代码(PLayer类):

     box = new BoundingBox(new Vector3(location, 0), new Vector3(location.X + texture.width, location.Y + texture.height, 0));
     origin = new Vector2(texture.Width / 2, texture.Height / 2);

            location.X += speed * (float)Math.Cos(rotation - anglecorrection);
            location.Y += speed * (float)Math.Sin(rotation - anglecorrection);

public BoundingBox getBox()
        {
            return box;
        }

代码(游戏)

BoundingBox box2 = new BoundingBox(new Vector3(location, 0), new Vector3(location.X + 30, location.Y + 30, 0));

 if (player.getBox().Intersects(box2))
            {
                // Do Stuff
            }

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

经过多次游戏,我找到了一个有效的解决方案。

我使用名为box2的BoundingBox设置了scene项目,其中心也有一个原点。

因此,如果两个对象具有相同的原点,那么这似乎可以解决问题。