C# et Unity3D pendant que vous appuyez sur la touche

Je suis très novice en C#. Je suis entrain de créer quelque chose dans l'Unité pour m'aider à apprendre le C# et de l'Unité de mieux.

Je veux savoir pourquoi:

Input.GetKeyDown(KeyCode.UpArrow))

Ne se déclenche une fois lorsqu'il est placé à l'intérieur:

void Update()

Depuis la mise à jour est une boucle, pourquoi n'est-il pas tiré alors que j', maintenez la touche enfoncée (dans mon cas, provoquant une sphère pour se déplacer)?

J'ai réussi à le faire fonctionner à l'aide de deux booléens qui sont modifiés lorsque la touche est enfoncée et relâchée.

Voici mon script que je suis à jouer avec pour déplacer une sphère et de simuler l'accélération/décélération:

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) ;
}

}

OriginalL'auteur imperium2335 | 2012-07-06