Unity是否记得按下的按键?

问题描述:

我有我的移动,跳跃和攻击的动画,但如果当我跳我按atack键,跳后的pj攻击,我不想要它,所以我的问题是:Unity是否记得按下的按键?

Unity是否记住什么键用户按下了吗?我可以避免它吗?

+2

这将在很大程度上取决于你的代码肯定 – BugFinder

+0

我不确定我是否理解你的问题:你想“覆盖”了“旧”按键,如果在处理前一个之前按另一个键? – nabuchodonossor

+1

是否可以添加您尝试过的代码 – trahane

如果您使用动画制作工具并使用按键设置触发器,则它们会保留在内存中,您必须手动清除它们。

把触发,使用ResetTrigger(字符串名称)方法 - Unity Documentation

Unity是否记得用户按下的按键?

这取决于使用哪个输入API。

Input.GetKeyDown

统一记得哪个键时用户Input.GetKeyDown用于在帧仅按压。在该框架通过之后,它消失并且现在是假的。只有当该键被释放并再次按下时,它才会再次成立。

void Update() 
{ 
    //True when Space key is pressed 
    if (Input.GetKeyDown(KeyCode.Space)) 
    { 

    } 

    //One Frame has passed, Input.GetKeyDown will be false next time Update() is called 
} 

Input.GetKey

统一记住哪些关键用户按下Input.GetKey用的每框架。只有钥匙才会被释放。

void Update() 
{ 
    //True when Space key is pressed 
    if (Input.GetKey(KeyCode.Space)) 
    { 

    } 

    //One Frame has passed, Input.GetKe will STILL be true next time Update() is called 
} 

Input.GetAxis:

行为是-相同,除了它返回-1到值,而不是truefalseInput.GetKey功能。当密钥被释放时,在接下来的几帧中,它逐渐地返回0


Input.GetAxisRaw:

行为是-相同,除了它返回-1到值,而不是truefalseInput.GetKeyDown功能。当密钥被释放时,它立即返回0

+1

只需添加一件事:如果输入管理器中的重力和灵敏度都设置为100,则'Input.GetAxis'可以像'Input.GetAxisRaw'一样工作。 – Galandil

+0

@Galandil是的,它可以。我写了它的默认行为。对于任何修改它来像'Input.GetAxisRaw'一样工作的人来说,使用'Input.GetAxis'有什么意义,因为这是它们之间的唯一区别。 – Programmer

+1

确实没有意义,我只是为了Unity的一般知识而发布它。 :) – Galandil