0
我已經在這個主題上看到了一些答案,但沒有一個真的有太大的幫助。XNA BoundingBox&Origin
很簡單,BoundingBox碰撞。將原點設置爲0,0時,碰撞發生得很好(至少對於我的需要)。正如我指定播放機的起源中心(所以它圍在中間旋轉)的碰撞似乎是抵消它在錯誤的時間
代碼(玩家類)檢測碰撞:
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
}
感謝您的幫助:)
你的碰撞檢測代碼是什麼樣的? –
和那個代碼在哪裏?它在你的播放器內嗎?是'box'和'origin'實例變量嗎?如果他們不是發生在他們身上? –
你的碰撞偏移是什麼方式?它是否會被原始矢量的大小所抵消?它被更多的抵消? –