Я очень новичок в 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) ;
}
}