C# und Unity3D, während die Taste gedrückt wird

Ich bin sehr neu in C#. Ich bin etwas zu schaffen, was in der Einheit zu helfen, mich zu lernen, C# und Unity besser.

Möchte ich wissen, warum:

Input.GetKeyDown(KeyCode.UpArrow))

Feuert nur einmal gesetzt, wenn innerhalb:

void Update()

Seit dem update ist eine Schleife, warum wird er nicht gefeuert, während ich eine Taste gedrückt halten (in meinem Fall verursacht eine Sphäre zu bewegen)?

Habe ich es geschafft, es funktioniert durch die Verwendung von zwei bools, die geändert werden, wenn die Taste gedrückt und wieder losgelassen wird.

Hier ist mein vollständiges Skript, das ich spielen mit zu bewegen, einer Sphäre und simulieren Beschleunigung/Verzögerung:

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

}
InformationsquelleAutor imperium2335 | 2012-07-06
Schreibe einen Kommentar