簡體   English   中英

將玩家旋轉至其標題

[英]Rotating player towards their heading

我正在嘗試從一個舊的Flash游戲復制一個運動系統,而這個Flash游戲是我正在統一開發的游戲(大多數情況下只是為了練習)。我遇到的主要問題是玩家不會“看”走向他要去的地方。 他一直都朝着方向看。

這是我目前的樣子

這就是我想要的樣子

我已經嘗試過這樣做,但是找不到一個效果很好的解決方案(並且代碼已經消失了)。 如果有人可以幫助我實現這樣的事情,那就太好了!

我的播放器控件的代碼:

public void PlayerFixedUpdate () {
    if (Input.GetKey(KeyCode.A) && transform.position.x > -44){
        if (body.velocity.x > -15){
            body.AddForce(new Vector2(-15,0),ForceMode2D.Force);
        }
    }
    if (Input.GetKey(KeyCode.D) && transform.position.x < 9){
        if (body.velocity.x < 15){
            body.AddForce(new Vector2(15,0),ForceMode2D.Force);
        }
    }
    if (Input.GetKey(KeyCode.W) && transform.position.y < 24){
        if (body.velocity.y < 15*body.mass){
            body.AddForce(new Vector2(0,15),ForceMode2D.Force);
        }
    }
    if (Input.GetKey(KeyCode.S) && transform.position.y > -1){
        if (body.velocity.y > -15*body.mass){
            body.AddForce(new Vector2(0,-15),ForceMode2D.Force);
        }
    }
}

取決於對象的設置方式,但是一種解決方案是沿速度分量的方向設置旋轉。

void rotateFace()
{
   Vector2 dir = rbody.velocity.normalized; // where rbody is your rigidbody2D
   transform.rotation = Quaternion.Euler(0, 0, Mathf.Atan2(dir.y, dir.x)*Mathf.Rad2Deg - 90); //may not need 90deg offset here
}

您可能需要包括零速度檢查,在這種情況下,您不應該做任何事情來維持最后的旋轉。

第二個鏈接顯示他們總是在一個方向上移動,而這恰恰是角色所面對的方向,基本上他們要做的就是使用玩家輸入來旋轉角色,並繼續沿玩家的本地前進方向施加速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM