Soy muy nuevo en C#. Estoy creando algo en Unity para ayudarme a aprender C# y Unity mejor.C# y Unity3D mientras se está presionando la tecla
Quiero saber por qué:
Input.GetKeyDown(KeyCode.UpArrow))
sólo se activa una vez cuando se coloca dentro:
void Update()
desde la actualización es un bucle, por qué no se disparó mientras mantiene pulsada la tecla (en mi caso haciendo que una esfera se mueva)?
He logrado que funcione usando dos bools que se modifican al presionar y soltar la tecla.
Aquí es mi guión completo que estoy jugando con mover una esfera y simular la aceleración/deceleración:
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) ;
}
}
Gracias! Dado que esas dos funciones son unitarias, ¿cómo lo haría originalmente sería lo que más haría para lograr lo que quería en solo C#? – imperium2335
Sí, esta sería una forma común de hacerlo. – redtuna