2013-02-01 60 views
1

如何讓我的玩家在被點擊時移動到鼠標上(如在魔獸中)?單擊時讓玩家移動到我的鼠標?

到目前爲止,我曾嘗試:

if (Mouse.isButtonDown(0)) { 

    if (X < Mouse.getX()) { 
     X += Speed; 
    } 
    if (X > Mouse.getX()) { 
     X -= Speed; 
    } 
    if (Y < Mouse.getY()) { 
     Y += Speed; 
    } 
    if (Y > Mouse.getY()) { 
     Y -= Speed; 
    } 
} 

但這只不過是我想要做什麼,如果我按住鼠標。

+0

僅供參考,您可能希望谷歌「的遊戲引擎」。這些天沒有人從頭開始寫遊戲。 – gerrytan

+0

您可能還想將其移入gamedev stackexchange。 –

+0

@gerrytan如果這是真的,那麼如何解釋SO *上的4000多個XNA問題*?從零開始構建小型遊戲沒有什麼可說的。對於較小的項目,遊戲引擎通常是完全過度的。 – Lucius

回答

3

只需存儲最後一次點擊的位置並讓玩家在該方向上移動即可。

添加這些字段,以您的播放器類:

int targetX; 
int targetY; 

在您的更新方法存儲新的目標和適用的運動:

// A new target is selected 
if (Mouse.isButtonDown(0)) { 

    targetX = Mouse.getX(); 
    targetY = Mouse.getY(); 
} 

// Player is not standing on the target 
if (targetX != X || targetY != Y) { 

    // Get the vector between the player and the target 
    int pathX = targetX - X; 
    int pathY = targetY - Y; 

    // Calculate the unit vector of the path 
    double distance = Math.sqrt(pathX * pathX + pathY * pathY); 
    double directionX = pathX/distance; 
    double directionY = pathY/distance; 

    // Calculate the actual walk amount 
    double movementX = directionX * speed; 
    double movementY = directionY * speed; 

    // Move the player 
    X = (int)movementX; 
    Y = (int)movementY; 
} 
+0

我用更新方法替換了代碼並添加了2個變量,但它不起作用 – Griffy

+1

@ griffy100我不會爲你編寫遊戲,朋友。 – Lucius

+0

好對不起:(關於 – Griffy