我对 C# 很陌生。我正在 Unity 中创建一些东西来帮助我更好地学习 C# 和 Unity。
我想知道为什么:
Input.GetKeyDown(KeyCode.UpArrow))
放置在以下范围内时只会触发一次:
void Update()
由于更新是一个循环,为什么在我按住键时它没有被触发(在我的情况下导致球体移动)?
我已经设法通过使用两个在按下和释放键时改变的布尔值来使其工作。
这是我用来移动球体并模拟加速/减速的完整脚本:
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) ;
}
}