Sono molto nuovo in C#. Sto creando qualcosa in Unity per aiutarmi ad imparare meglio C# e Unity.C# e Unity3D mentre si preme il tasto
Voglio sapere perché:
Input.GetKeyDown(KeyCode.UpArrow))
spara Solo una volta, quando sono immessi entro:
void Update()
dall'aggiornamento è un ciclo, perché non viene sparato mentre tengo la chiave verso il basso (in il mio caso fa spostare una sfera)?
Sono riuscito a farlo funzionare utilizzando due bool che vengono modificati quando il tasto viene premuto e rilasciato.
Ecco il mio script completo che sto giocando con a spostare una sfera e simulare l'accelerazione/decelerazione:
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) ;
}
}
Grazie! Dal momento che queste due funzioni sono specifiche di Unity, il modo in cui l'ho fatto in origine è ciò che la maggior parte farebbe per ottenere ciò che volevo in C#? – imperium2335
Sì, questo sarebbe un modo comune per farlo. – redtuna