[英]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.