[英]Unity 2D Jump Button Onclick Animation does not work properly
我在同一個問題上坐了幾個小時。 我正在做一個 WebGL 游戲,在 PC 上玩時應該可以用移動控制(觸摸)或鍵盤玩。 在游戲開始時,會詢問玩家他玩的是鍵盤還是移動設備,然后當他玩移動設備時,它會將 UI 更改為操縱桿和按鈕。
在 Unity Animator 中,Players Animations for Movement 確實有控制動畫的布爾值,所以當 anim.SetBool("Jump", true) 跳轉 Animation 開始時。 當 false 並且 Player 沒有移動時,播放 Idle Animation,或者當 false 和 Movement 時,播放 Walk Animation。
當我按“空格”時,這一切都很好。 當我按下 Space Jump() 時被調用。
使用鍵盤演奏時,玩家的動作很好,但我很難讓跳躍按鈕起作用。 字符正在跳躍,但出於任何原因,animation 僅在輸入來自鍵盤時才起作用。 同樣,按鈕和鍵盤只是調用相同的 function,請看一下:
using UnityEngine.UI;
public class PlayerMovement : MonoBehaviour
{
//...
public bool isMobile;
public Joystick joystick;
GameObject rend;
public Button buttonJump;
void Start()
{
// HERE Jump() IS INVOKED, WHEN THE JUMP BUTTON IS PRESSED!
buttonJump.onClick.AddListener(Jump);
}
void Update()
{
PlayerJump();
CheckIsGrounded();
}
private void FixedUpdate()
{
PlayerWalk();
}
void PlayerJump()
{
if (isGrounded)
{
if ( Input.GetKey(KeyCode.Space))
{
Jump();
}
}
}
//WHEN INVOKED VIA JUMP BUTTON, THE PLAYER MOVES UP FINE, BUT THE JUMP ANIMATION DOES NOT START!
public void Jump()
{
if (isGrounded)
{
anim.SetBool("Jump", true);
jumped = true;
myBody.velocity = new Vector2(myBody.velocity.x, jumpPower);
}
}
void CheckIsGrounded()
{
isGrounded = Physics2D.Raycast(groundCheckPosition.position, Vector2.down, 0.1f, groundLayer);
if (isGrounded)
{
if (jumped)
{
anim.SetBool("Jump", false);
jumped = false;
}
}
}
}
我有一個解決方法,我認為 Unity 本身存在類似錯誤(使用 2019.3.8f1)。 我只是創建了一個自己的腳本,僅用於一個 Jump Button,當它被按下時,為 Animator 設置布爾值並將速度添加到剛體,與我在舊代碼中編寫的完全相同,但在新腳本中有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.