2017-12-20 10 views
0

Ich möchte ein Objekt mit Beschleunigungseingang in der Einheit bewegen:Unity3D input.acceleration

if (...) 
transform.translate(vector2.right*speed); 
else if (...) 
transform.translate(vector2.left*speed); 

Ich weiß nicht, was die Bedingungen

+2

Was bewirkt, dass sich das Objekt richtig bewegt? Was wird dein Objekt nach links bewegen lassen? Die Antworten auf diese Fragen werden Ihre Bedingungen sein. – ryeMoss

Antwort

2

Gut sein sollte, Sie technisch diese Bewegung ohne Verwendung erreichen können Bedingungen überhaupt. Setzen Sie einfach so etwas in Update() oder FixedUpdate() (FixedUpdate() wird empfohlen).

Vector2 dir = Vector2.zero; 
void FixedUpdate() 
{ 
    dir.x = Input.acceleration.x; 
    transform.translate(dir * speed * Time.deltaTime); 
} 

Dies liegt daran, wenn Ihr Telefon auf einer Fläche flach gelegt wird Input.acceleration.x 0. Wenn es nach rechts geneigt wird, wird der Wert positiv sein. Bei einer Neigung nach links ist der Wert negativ. So bleiben Sie frei von Konditionalitäten.

+1

Ich möchte nur hinzufügen, dass selbst wenn Input.GetAxis ("Horizontal") verwendet würde, keine Bedingungen erforderlich wären. –

+0

Sehr wahr! Ich versuche, Bedingungen in der Bewegungslogik so weit wie möglich zu vermeiden, weil es dazu neigt, die Dinge unruhig zu machen. –

+0

Danke Brandon. schau, ich habe 2 Klassen für meinen Charakter. In der ersten Klasse mache ich den Charaktersprung, indem ich die erzwungene Kollision hinzufüge (der Charakter hat auch die Schwerkraft) und in der Sekunde möchte ich, dass er sich durch die Beschleunigung nach links und rechts bewegt. Ich habe getan, was du gesagt hast, aber der Charakter hört auf, nach 1 oder 2 Sprüngen zu springen, irgendeine Idee? –