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 动画无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章