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
Vous devez vous connecter pour publier un commentaire.
La la documentation dit que c'est normal, le comportement attendu.
Vous voudrez probablement utiliser GetButton ou GetAxis au lieu de cela, depuis ceux qui indiquent "pressé" aussi longtemps que la touche est maintenue enfoncée (GetButton renvoie true, GetAxis retourne 1).
Oui, ce serait une façon courante de le faire.
OriginalL'auteur redtuna
À partir de la documentation sur D'entrée.GetKeyDown.
Cette méthode est la plus pratique pour l'ouverture de menus ou l'autre des événements en temps. Telles que la poursuite du dialogue.
Vous pouvez utiliser les méthodes comme mentionné ci-dessus, cependant, vous pouvez utiliser D'entrée.GetKey pour atteindre votre objectif.
OriginalL'auteur Flickayy