2016-11-02 10 views
1

Zwischen zwei Punkten oder nur nach links ohne Unterbrechung oder nur nach rechts ohne Unterbrechung.Wie kann ich einen Zylinder nach rechts und links bewegen?

In diesem Code i drehen Sie den Zylinder, aber ich kann es nicht zu den Seiten bewegen:

using UnityEngine; 
using System.Collections; 

public class MakeTwoPoints3D : MonoBehaviour 
{ 
    public float speed = 10f; 

    public float delta = 15.5f; // Amount to move left and right from the start point 
    public float moveSpeed = 5.0f; 
    private Vector3 startPos; 

    void Start() 
    { 
     startPos = transform.position; 
    } 

    void Update() 
    { 
     transform.Rotate(Vector3.up, speed * Time.deltaTime); 
     transform.position += transform.right * Time.deltaTime * moveSpeed; 
    } 
} 

Wenn ich transform.right es mache den Zylinder im Kreis auf Platz oben und unten im Kreis zu bewegen. Wenn ich transform.up mache, wird es es zu mir bewegen, ich meine wie vorwärts, aber zur Kamera, aber wenigstens wird es es bewegen. Und wenn ich mich verwandle, wird es wieder Kreise bilden und den Zylinder in Kreisen nach oben abziehen.

Ich kann nicht herausfinden, wie man es zu den Seiten bewegt.

+0

Welchen Wert hat 'transform.right'? – ChrisF

Antwort

2

Sie müssen Vector3.right statt transform.right verwenden.

void Update() 
{ 
    transform.Rotate(Vector3.up, speed * Time.deltaTime); 
    transform.position += Vector3.right * Time.deltaTime * moveSpeed; 
} 

Wenn Sie transform.right verwenden, die Vector3 werden die lokalen Drehungen des Objekts übernehmen die transformieren. Das heißt, wenn das Objekt um 45 Grad um die Y-Achse gedreht wurde, wäre Ihr Vektor transform.right in einem Winkel. Wenn Sie ein Objekt entlang seiner lokalen Achse verschieben, während Sie es drehen, wird es sich in einem Kreis bewegen.

Auf der anderen Seite, Vector3.right ist immer im Weltall, so dass es immer "wahr" richtig stehen wird.

+0

Ich habe versucht, die Lösung der Zylinder bewegt sich nicht nach rechts oder links, es bewegt sich ein bisschen nach links, sondern auch auf die Kamera zu mir. Ich meine, es ist, als würde man sich nach links und rückwärts bewegen. Ich habe einen sehr kurzen Videoclip aufgenommen, der es zeigt: https://www.youtube.com/watch?v=7pFY8rDK7Rg&feature=youtu.be –

+0

Das ist, weil Ihre Kamera gedreht wird. Weder 'transform.right' noch' vector3.right' wird das Objekt relativ zur Kamera nach rechts verschieben. – Soviut

Verwandte Themen