我仍然是 Unity 的新手,我正在嘗試制作一個自上而下的 2D 游戲,但我堅持使用移動腳本,當我斜向移動時移動速度更快。當我在“軸”vector2上使用歸一化并開始移動時,播放器會繼續移動一點,然后當我停止按下任何鍵時突然停止移動,當我移除歸一化時,移動恢復正常并且播放器停止緩慢移動并且完美,但是當我對角移動時它仍然更快。
這是我的代碼:
{
Rigidbody2D rb;
Vector2 axis;
public float Speed = 400;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
movement();
}
void movement()
{
axis = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")).normlized * Speed;
rb.AddForce(axis, ForceMode2D.Force);
rb.drag = 60;
}
}
uj5u.com熱心網友回復:
發生的情況是回傳的值GetAxis在某些幀上被平滑。因此,當您normalize使用向量1時,即使您的輸入實際上小于該向量,它也會回傳一段時間,因為它正在平滑。
一般來說,而不是
new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical").normalized`
對于您更愿意使用的較小輸入,它總是回傳幅度 1 Vector2.ClampMagnitude
axis = Vector2.ClampMagnitude(new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")), 1f) * Speed;
僅當向量的總幅度 > 1 時才會鉗位
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408547.html
標籤:
上一篇:如何找到破壞我的物件的腳本?
下一篇:Unity中的多型性與單一行為
