按钮的GetKey相当于什么。在我的安卓游戏中,当用户按下并按住按钮时,我希望玩家向右移动但是当我按下按钮时它只移动一次。但是当我从具有GetKey功能的键盘输入时,它会一直移动直到我停止持有按钮。我想使用像GetKey这样的按钮。我试图将一个事件触发器指针向下组件添加到我的按钮中,但它不起作用。我该怎么办?
public void moveRight(){
rigidbody2D.velocity = new Vector2(moveSpeed,rigidbody2D.velocity.y);
}
void Update () {
if(Input.GetKeyDown (KeyCode.Space)){
rigidbody2D.velocity = new Vector2(rigidbody2D.velocity.x, jumpHigh);
}
if (Input.GetKey (KeyCode.A)) {
rigidbody2D.velocity = new Vector2(-moveSpeed,rigidbody2D.velocity.y);
}
if (Input.GetKey (KeyCode.D)) {
rigidbody2D.velocity = new Vector2(moveSpeed,rigidbody2D.velocity.y);
}
}
他们完全相同,但我不明白为什么它不能继续工作。 更新方法是关键,我知道这一点,但我不知道如何获取有关更新方法中按下按钮的信息。帮助。
答案 0 :(得分:1)
嗯,我们在这里有Unity3D
API的两个不同部分。
让我们把它分成几部分:
如API docs中所述,Input.GetKey只检查某个键是否 :
当用户按下由name标识的键时,返回true。想想汽车火灾。
如果你每帧检查一次,(每帧执行Update()
)你会重新检查是否按下按钮,如果是,则继续速度更改。
EventTriggers有点不同。它们实际上绑定了一个delegate
(确切地说是UnityAction
)并传递给它们,并在给定的EventTriggerType
触发时将其作为回调触发。因此,如果您使用OnPointerDown()
与moveRight()
绑定,则当指针在GameObject
上方向下时,它将会触发。如果按下按钮,它将不会再次触发,因为实际的指针停止事件已经发生,并且已经触发了传递给它的相应触发器。指针现在实际上并没有下降。它很紧迫。
这一切都归结为这样一个事实:如果按下按钮,则一个部分检查每一帧,而另一个部分在按下按钮时发出。