Ich bin sehr neu in C#. Ich erschaffe etwas in Unity, damit ich C# und Unity besser lernen kann.C# und Unity3D während der Schlüssel gedrückt wird
Ich möchte wissen, warum:
Input.GetKeyDown(KeyCode.UpArrow))
Nur einmal ausgelöst, wenn platziert in:
void Update()
Seit Update ist eine Schleife, warum ist es nicht gebrannt, während ich die Taste gedrückt halten (in mein Fall verursacht eine Kugel zu bewegen)?
Ich habe es geschafft, es funktioniert mit zwei Bools, die geändert werden, wenn die Taste gedrückt und losgelassen wird.
Hier ist mein ganzes Skript, das ich mit spiele eine Kugel zu bewegen und Beschleunigung/Abbremsung simulieren:
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) ;
}
}
Danke! Da diese beiden Funktionen Unity-spezifisch sind, würde die Art und Weise, wie ich es gemacht habe, ursprünglich das sein, was die meisten tun würden, um das zu erreichen, was ich nur in C# wollte? – imperium2335
Ja, das wäre ein üblicher Weg. – redtuna