1 回答
TA贡献1998条经验 获得超6个赞
由于您的if...else陈述,会出现此问题。例如,如果您单击Right按钮,则void MoveRight()调用。它设置movingRight = true和movingLeft = false。
所以在你的Update()函数中,首先else if (movingLeft == false)运行并将你的速度设置为 0 并将你的动画设置为空闲。和第二次if (movingRight == true)运行。但是因为speed = 0and animation = idleandUpdate()函数在每一帧都被调用,所以什么也没发生。
您可以将脚本更改为:
public bool movingLeft = false;
public bool movingRight = false;
public float speed = 2f;
public Vector3 moveDirectionLeft = Vector3.left;
public Vector3 moveDirectionRight = Vector3.right;
void Start()
{
movingLeft = false;
movingRight = false;
}
void Update()
{
if (movingLeft == true)
{ // LEFT BUTTON //
WalkAnim.SetBool("WalkLeft", true);// walk left
transform.Translate(moveDirectionLeft * speed * Time.deltaTime);
}
else if (movingRight == true)
{ // RIGHT BUTTON //
WalkAnim.SetBool("WalkRight", true); // walks right
transform.Translate(moveDirectionRight * speed * Time.deltaTime);
}
else
{
WalkAnim.SetBool("WalkLeft", false);
WalkAnim.SetBool("WalkRight", false);
}
}
public void limitLD()
{ // UI Button Event trigger - pointUp
movingLeft = false;
}
public void limitRD()
{ // UI Button Event trigger - pointUp
movingRight = false;
}
public void MoveLeft()
{ // UI Button Event trigger - pointDown
movingLeft = true;
movingRight = false;
}
public void MoveRight()
{ // UI Button Event trigger - pointDown
movingLeft = false;
movingRight = true;
}
我希望它对你有帮助。
- 1 回答
- 0 关注
- 380 浏览
添加回答
举报