所以我有一個炮塔式槍,有一個基準精靈()和一個單獨的精靈()。軸被拉到底座後面,並旋轉指向鼠標位置。軸的角度存儲爲_turretAngle
。Monogame/XNA Gun跟隨鼠標,發射子彈問題
當我嘗試正確定位子彈時,出現了我的問題。問題中的子彈()需要始終從軸的尖端點火,並且正確地向正確的方向發射,當然也應該朝正確的方向發射。
要調整子彈的角度,我只需使用_turretAngle
,方向是new Vector2(-Math.Cos(_turretAngle), -Math.Sin(_turretAngle));
但我無法獲得正確的初始位置。
我現在有它如下:
int i = _bullets.Count - 1;
Bullet b = _bullets[i];
b.SetAngle(_turretAngle);
float cos = (float)Math.Cos(_turretAngle);
float sin = (float)Math.Sin(_turretAngle);
b.SetDirection(new Vector2(-cos, -sin));
var posX = (Position.X - (Shaft.Width * cos) - (b.Width * cos)) + (Width/2) - ((b.Width/2) * cos);
var posY = Position.Y - (Shaft.Height * sin) - (b.Height * sin);
b.SetPosition((int)posX, (int)posY);
b.BulletState = Bullet.State.Active;
子彈是如此接近被位置正確,但它不是位置在軸上,而不是(取決於轉檯的角度)定位的任何位置從炮塔前方5-15像素。
怎麼而且目前已出現:
如何我想它顯示:
我知道我可能會被挑剔的在這裏,但我我真的很想知道數學的錯誤。
我意識到可能會丟失一些信息,因此讓我知道是否需要添加任何內容。
我會建議只是在與子彈的相同位置產生這個子彈,然後應用相同的旋轉矩陣,然後應用平移矩陣,它應該在y方向上移動物體,使其等於炮塔高度+子彈高度。原因是您首先應用旋轉矩陣,然後移動該對象。它應該完全對齊,甚至沒有一個像素的差距。 –