![](/img/trans.png)
[英]How to play an AnimationClip when key is pressed in Unity3d, C#?
[英]C# and Unity3D while key is being pressed
我是C#的新手。 我在Unity中创建了一些东西来帮助我更好地学习C#和Unity。
我想知道原因:
Input.GetKeyDown(KeyCode.UpArrow))
放入内部时仅触发一次:
void Update()
由于更新是一个循环,为什么在按住键的同时不会触发(在我的情况下导致球体移动)?
我已经设法通过使用两个在按下和释放按键时改变的bool来工作。
这是我正在玩的完整脚本,用于移动球体并模拟加速/减速:
using UnityEngine;
using System.Collections;
public class sphereDriver : MonoBehaviour {
int x ;
bool upPressed = false ;
bool downPressed = false ;
void Start()
{
x = 0 ;
}
void Update ()
{
if(x > 0) {
x -= 1 ;
}
if(x < 0) {
x += 1 ;
}
if(Input.GetKeyDown(KeyCode.UpArrow))
{
upPressed = true ;
}
else if(Input.GetKeyUp(KeyCode.UpArrow))
{
upPressed = false ;
}
if(upPressed == true)
{
x += 5 ;
}
if(Input.GetKeyDown(KeyCode.DownArrow))
{
downPressed = true ;
}
else if(Input.GetKeyUp(KeyCode.DownArrow))
{
downPressed = false ;
}
if(downPressed == true)
{
x -= 5 ;
}
transform.Translate(x * Time.deltaTime/10, 0, 0) ;
}
}
来自Input.GetKeyDown的文档。
您需要从Update函数调用此函数,因为每个帧都会重置状态。 在用户释放该键并再次按下该键之前,它不会返回true。
此方法对于打开菜单或其他一次性事件非常有用。 比如继续对话。
您可以使用上面提到的方法,但是您可以使用Input.GetKey来实现您的目标。
当用户按下由name标识的键时返回true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.