[英]Unity character doesn't stop sprinting
最近才接觸Unity,做了一個角色移動系統; 除了沖刺之外,一切都在工作。 我讓用戶使用“左移”來沖刺,盡管沖刺似乎永遠不會關閉。 我不太確定為什么會發生這種情況的原因,或者可以修復哪些代碼部分來適應這種情況,因此,我附上了移動的源文件。
這是粘貼: https://pastebin.com/S1h5pEwq
特別是,這是機芯 function:
void Movement()
{
Vector2 axis = new Vector2(Input.GetAxis("Vertical"), Input.GetAxis("Horizontal")) * walkSpeed;
Vector3 forward = new Vector3(-Camera.main.transform.right.z, 0.0f, Camera.main.transform.right.x);
Vector3 wishDirection = (forward * axis.x + Camera.main.transform.right * axis.y + Vector3.up * rb.velocity.y);
rb.velocity = wishDirection;
if (Input.GetKey(KeyCode.LeftShift))
{
isSprinting = true;
}
else
{
isSprinting = false;
}
if (isSprinting == true)
{
walkSpeed = 10.0f;
}
}
更具體地說,我的目標是在按下鍵時嚴格激活 Sprint。
嘗試這個:
void Movement()
{
Vector2 axis = new Vector2(Input.GetAxis("Vertical"), Input.GetAxis("Horizontal")) * walkSpeed;
Vector3 forward = new Vector3(-Camera.main.transform.right.z, 0.0f, Camera.main.transform.right.x);
Vector3 wishDirection = (forward * axis.x + Camera.main.transform.right * axis.y + Vector3.up * rb.velocity.y);
rb.velocity = wishDirection;
if (Input.GetKey(KeyCode.LeftShift))
{
isSprinting = true;
}
else
{
isSprinting = false;
}
if (isSprinting == true)
{
walkSpeed = 10.0f;
}
else
{
walkSpeed = 0.0f
}
}
您的腳本中的問題是您沒有重置速度。
If(Input.GetKeyUp(KeyCode.LeftShift)){
isSprinting = false;
}
這樣就可以了,您沒有檢查播放器何時停止按 shift。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.