gpt4 book ai didi

c# - 我的 getkeydown 未被识别

转载 作者:太空狗 更新时间:2023-10-29 23:20:01 27 4
gpt4 key购买 nike

嘿,这是一个带有动画参数的简单脚本,但我不知道为什么我的 if with getkeydown 没有执行!如果没有按下键,它应该播放空闲动画,但那没有发生,而只是没有通过那部分代码。

public class PlayerMovement : MonoBehaviour {

private Rigidbody2D rigidbodyMurrilo;
public float speed;
public Animator anim;
public bool FacingRigth;
public Transform transform;

private void Start()
{
rigidbodyMurrilo = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();

FacingRigth = true;

}

void FixedUpdate()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");

HandleMovement(horizontal);

Flip(horizontal);




}

void HandleMovement(float horizontal)

{
rigidbodyMurrilo.velocity = new Vector2(horizontal * speed, rigidbodyMurrilo.velocity.y);

}


private void Update()
{
if (Input.GetKeyDown("d") || Input.GetKeyDown("left") || Input.GetKeyDown("a") || Input.GetKeyDown("rigth"))
{
anim.Play("MoveRigth");
}

Debug.Log(Input.GetKey("d"));

if (Input.GetKeyUp("d") || Input.GetKeyUp("left") || Input.GetKeyUp("a") || Input.GetKeyUp("rigth"))
{
anim.Play("Idle");
}
}

private void Flip (float horizontal){

if(horizontal > 0 && !FacingRigth || horizontal<0 && FacingRigth)
{

Vector3 theScale = transform.localScale;

theScale.x *= -1;

transform.localScale = theScale;

FacingRigth = !FacingRigth;

}

}

最佳答案

这是因为 Input.GetKeyUp() 方法并不像您认为的那样工作:)。 Input.GetKeyUp() 的工作方式如下:

The method returns true during the frame the user releases the key identified by name.

我建议你像这样修改你的 if 语句:

    if (Input.GetKeyDown("d") || Input.GetKeyDown("left") || Input.GetKeyDown("a") || Input.GetKeyDown("rigth"))
{
anim.Play("MoveRigth");
}
else
{
anim.Play("Idle");
}

或者第二次使用相同的语句并在其前面加上 !。我希望这会有所帮助:)

关于c# - 我的 getkeydown 未被识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51231948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com