C #и Unity3D при нажатии клавиши

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

}
10
задан Joe 15 May 2013 в 13:07
поделиться