我正在制作自上而下的射擊游戲。我撰寫了敵人在地圖上隨機生成的代碼,他們正試圖抓住你。我讓他們這樣做,我還寫了一個代碼讓他們看著你。基本上只在 Z 軸上向你旋轉。但問題是,當它們在玩家的右側生成時,敵人正在遠離玩家。但如果我旋轉并開始移動,他們就會試圖修復自己。這是我的腳本:
void FixedUpdate () {
Vector3 difference = player.position - transform.position;
float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotationZ);
Vector2 toTarget = player.transform.position - transform.position;
float speed = 1.5f;
transform.Translate(toTarget * speed * Time.deltaTime);
}
uj5u.com熱心網友回復:
認為這Translate
是一個相對修飾符。因此,當您在 Translate 本身中指定方向時,移動會變得混亂。用來Vector3.MoveTowards
解決問題。如果你的游戲是 2D 的,你也可以Vector2
像下面這樣使用:
Vector2.MoveTowards(currentPosition, targetPosition, step);
最好您可以像這樣修復此代碼并將回傳值設定為MoveTowards
等于transform.Position
。
void FixedUpdate () {
Vector3 difference = player.position - transform.position;
float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotationZ);
float speed = 1.5f;
// replace Translate to MoveTowards
transform.position = Vector3.MoveTowards(transform.position, player.position, Time.deltaTime * speed);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/477585.html