2012-07-20 149 views
1

我想沿着直線路徑移動一個Sprite。我想在斜率上移動5個像素,或者每次使用該方法時都要使用斜邊,直到達到終點。沿着直線移動對象

我有斜線和y截距的線,我也有通過getX()和getY()的精靈當前的X和Y值。終止的X和Y點是變量finalX和finalY。

我已經嘗試了這麼多的方程,但我似乎無法讓他們中的任何人工作。我錯過了什麼!!?

Hopefully this image makes sense for what I am trying to do!

我最近的方程嘗試使用表達式y = mx + B。

float X = (getY() + 5 - interceptY)/slope; 
float Y = slope*(getX() + 5) + interceptY; 
setPosition(X, Y); 
+1

你可以發佈你的最新嘗試? – Keppil 2012-07-20 06:59:33

回答

4

能幫你從我最近的比賽的幾個公式,代碼移動的物體賦予其旋轉:

float xDirection = FloatMath.sin((float) Math.toRadians(getRotation())) 
      * currentSpeed; 
float yDirection = FloatMath.cos((float) Math.toRadians(getRotation())) 
      * -currentSpeed; 

float newX = getX() + xDirection; 
float newY = getY() + yDirection; 

你只需要獲得中,你需要你的精靈移動的角度這會爲你做。希望這可以幫助。

+0

非常感謝你! =)一旦我找到正確的旋轉,就可以輕鬆地工作!用它來設置我的精靈的旋轉,它直接插入你的代碼! 'setRotation((float)Math.toDegrees(Math.atan2(finalY - getY(),finalX - getX()))+ 90);'偶然使用AndEngine? =) – Gatekeeper 2012-07-20 07:36:21

+0

@Gatekeeper,不客氣,很高興我能幫忙!是的,我正在使用AndEngine。 – Egor 2012-07-20 08:10:29