有一些小問題有一些想法,但不知道要使用哪些庫以及如何使用。 到目前爲止,我正在創建2D遊戲,並且我有一個小船精靈和子彈。 就在這一刻,我的子彈從船的中心點發射。LibGDX設置子彈船周圍的初始位置2D圖形
我想要什麼:
- 要創造這樣在我的船了一圈,並根據方向使可能從圓線 火子彈。也許 它可以通過使用Quaternion類,但需要一些 提示,如何開始。
- 另一種想法是創建另一個子彈,其中 將總是平行於第一個並且將同時被觸發 。
下圖描述了我在這個項目中的目標。
到目前爲止,我的更新()播放器類中的方法使下面的操作:
@Override
public void update() {
//When player touches the screen, TouchInputHandler class sets the variable isAiming = true.
if (TouchInputHandler.isAiming) {
//Creating an Vector2 object which takes coordinates from user input on the screen.
Vector2 aim = new Vector2(TouchInputHandler.getAimDirection().x, TouchInputHandler.getAimDirection().y);
//Checking if aim is real value.
//Waiting for the delay between previous and next bullet launched.
if (aim.len2() > 0 && cooldownRemaining <= 0) {
//cooldownFrames if final static value equal to 6.
//So loop will go through 6 times before next bullet.
cooldownRemaining = cooldownFrames;
//Taking the current position of the ship and applying it to the current position of bullet.
Vector2 currentPos = new Vector2(position.x, position.y);
//Substituting current bullet position from the aim position and getting direction vector.
aim.sub(currentPos);
//Normalizing the aim (bullet direction) vector, so the sum of scalars of vector = 1;
aim.nor();
//Incresing the speed of bullet movement.
aim.x *= 10;
aim.y *= 10;
//adding new entity with the bullet currentPos and direction where it has to move.
EntityManager.addEntity(new Bullet(currentPos, aim));
//After bullet has been launched, set isAiming to false.
TouchInputHandler.isAiming = false;
}
}
//decreasing cooldown Remaining in every loop until it will be equal 0 and bullet'll be ready again.
if (cooldownRemaining > 0)
cooldownRemaining--;
//method that is responsible for player movement.
motionMove();
}
如果你需要的代碼的任何其他部分,或其他信息,只問。 我將非常感謝您的幫助或任何提示。謝謝!
所以你想,子彈是從圓圈開始的,不是中心點? 你不需要四元數,因爲你在二維空間。四元數是一個方向矢量,旋轉應用於它(繞着這個矢量滾動)。我認爲2D Vecotr會在你的情況下做到這一點,但告訴我你想達到什麼目的,以及我的假設是否正確。 – Springrbua
哦,謝謝你的迴應。是的,你的假設是對的。我想要從圓圈邊界發射子彈,但不是從船的中心點發射子彈。任何想法,如何實現這個圈子?因爲現在子彈從船裏出來,看起來很醜。或者有任何其他的方式來實現這個功能?謝謝! – user3434362
你必須使用一個Vector2方向,它是一個歸一化的矢量,給出x的運動百分比和y方向的運動百分比。你必須計算兩個方向的運動。 – Springrbua