2013-07-16 3 views
0

Я видел несколько ответов на эту тему, но никто не очень помог.XNA BoundingBox & Origin

Проще говоря, столкновение 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 
      } 

Спасибо за вашу помощь :)

+0

Как выглядит ваш код обнаружения столкновения? –

+0

и где этот код? это внутри вашего плеера? переменные экземпляра 'box' и' origin'? если они не то, что с ними происходит? –

+0

В какой мере ваш столкновение? кажется ли он смещен размером вектора происхождения? это компенсируется больше? –

ответ

0

После много играл вокруг, я был в состоянии найти решение, которое работало.

Я установил элемент декора с помощью BoundingBox, который называется box2, также имеет начало координат в его центре.

Итак, если оба объекта имеют одинаковую точку начала, это, по-видимому, устраняет проблему.

Смежные вопросы