Unity 2D 跳转按钮 Onclick 动画无法正常工作

Posted

技术标签:

【中文标题】Unity 2D 跳转按钮 Onclick 动画无法正常工作【英文标题】:Unity 2D Jump Button Onclick Animation does not work properly 【发布时间】:2020-11-03 17:48:51 【问题描述】:

我在同一个问题上坐了好几个小时。我正在做一个 WebGL 游戏,在 PC 上玩时应该可以用移动控制(触摸)或键盘玩。在游戏开始时,系统会询问玩家他玩的是键盘还是移动设备,然后当他玩移动设备时,它会将 UI 更改为操纵杆和按钮。

在 Unity Animator 中,Players Animations for Movement 确实有控制动画的布尔值,所以 f.e.当 anim.SetBool("Jump", true) 跳转动画开始时。当为 false 且 Player 没有 Movement 时,播放 Idle Animation,或者当 false 和 Movement 时,播放 Walking Animation。

当我按“空格”时,一切正常。当我按下 Space Jump() 时被调用。

使用键盘演奏时玩家的动作很好,但我很难让跳跃按钮起作用。角色正在跳跃,但出于任何原因,动画仅在输入来自键盘时才起作用。同样,按钮和键盘只是调用相同的功能,请看一下:

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;
            
        
    

【问题讨论】:

【参考方案1】:

我有一个解决方法,我认为 Unity 本身存在类似错误(使用 2019.3.8f1)。 我只是创建了一个自己的脚本,仅用于一个 Jump Button,当它被按下时,为 Animator 设置布尔值并将速度添加到刚体,与我在旧代码中编写的完全相同,但在新脚本中它有效。

【讨论】:

以上是关于Unity 2D 跳转按钮 Onclick 动画无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

unity 3D ngui 如何用butten实现界面跳转

unity2d动画位置不在一起怎么调整

unity点击按钮弹出文字

unity2d中动画状态比较多,且切换非常频繁,有啥办法好管理

unity2d之2d帧动画创建

unity2d之2d帧动画创建