2015-11-03 57 views
2

我試圖讓我的玩家拍攝一個咒語,它會傳播到玩家點擊的地方。通過執行以下操作,我可以輕鬆完成此任務。直接點擊java拍攝對象libgdx

if(position.x >= destination.x - 1 && position.x <= destination.x + 1) 
     reachedX = true; 
    if(position.y >= destination.y - 1 && position.y <= destination.y + 1) 
     reachedY = true; 

但是如果玩家原點在,例如,0,0和我點擊10300然後移動右和上,但是當咒語達到10的X行進直接向上。我希望這個咒語以一個角度行進,它將與y座標同時到達x座標。這是一張圖片,展示了發生了什麼事情以及我想要發生的事情。

Image example

+0

你可以發佈位置和目標的類定義和聲明嗎? –

回答

4

在它看起來像拼寫第一畫面變爲45°,直到其到達正確的x座標。這聽起來像x和y的速度是相等的,無論目的地在哪裏。
你shuld反而有一個方向,並取決於x和y的速度。
爲了您首先需要明白這一點,玩家點擊。
因此,您可以實施InputProcessor和它的touchDown(int screenX, int screenY, int pointer, int button)
screenXscreenY參數在屏幕座標(像素)中給出,因此需要轉換爲您的世界座標。這可以使用cameraviewport及其unproject(Vector2 screenCoords)完成。該方法返回一個給出世界座標的Vector2
現在您需要找出您和點擊點之間的方向Vector2。方向Vector計算如下:

new Vector2(otherPos.x - myPos.x, otherPos.y - myPos.y).nor(); 

這將返回的兩個點之間的歸一化方向Vector
現在你只需要將x方向上的dir.x*spellSpeed*delta和y方向上的dir.y*spellSpeed*delta的法術移動,它應該看起來像在你的第二張照片中。