Jestem bardzo nowy w C#. Tworzę coś w Unity, aby pomóc mi lepiej uczyć się C# i Unity.C# i Unity3D podczas naciskania klawisza
Chcę wiedzieć dlaczego:
Input.GetKeyDown(KeyCode.UpArrow))
Tylko odpala raz po umieszczeniu w ciągu:
void Update()
Ponieważ zmiana jest pętla, dlaczego nie wystrzelił, a ja przytrzymaj klawisz w dół (w mój przypadek powodujący poruszenie kuli)?
Udało mi się sprawić, żeby działało, używając dwóch zmiennych, które są zmieniane po naciśnięciu i zwolnieniu klawisza.
Oto mój pełny skrypt, który gram z przenieść kulę i symulować przyspieszania/zwalniania:
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) ;
}
}
Dzięki! Ponieważ te dwie funkcje są specyficzne dla jedności, czy sposób, w jaki zrobiłem to pierwotnie, byłby tym, co większość zrobiłaby, aby osiągnąć to, co chciałem w C#? – imperium2335
Tak, byłby to powszechny sposób na zrobienie tego. – redtuna