2016-11-02 6 views
1

2点間または左側のノンスタップのみ、または右側のノンスタップのみ。このコードでシリンダーを左右に動かすにはどうすればいいですか?

iはシリンダーを回転さが、私は脇に移動することはできません。

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; 
    } 
} 

私はそれが円形に上下場所に円状にシリンダーを移動しますtransform.right作る場合。私がtransform.upを作ると、私はそれを私のところに移動しますが、私は前方にいるがカメラには向いていますが、少なくともそれは動かすでしょう。そして、もし私が変形させれば、再び円を描き、円の中の円柱を下に上げます。

私はそれをどのように側面に移動するのか分かりません。

+0

「transform.right」にはどのような価値がありますか? – ChrisF

答えて

2

transform.rightの代わりにVector3.rightを使用する必要があります。

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

あなたがtransform.rightを使用する、のVector3は、そのオブジェクトの変形の局所的な回転を採用します。つまり、オブジェクトがY軸を中心に45度回転した場合、transform.rightベクトルはある角度になります。オブジェクトを回転させながらローカル軸に沿ってオブジェクトを平行移動し続けると、オブジェクトは円内を移動します。

一方、Vector3.rightは常にワールドスペース内にあるため、常に「真」に直面します。

+0

私はあなたの解決策を試しました。シリンダーは右に動かないか左に少し動いていますが、私にはカメラにも動いています。私はそれが一緒に左と後ろに移動するようなものだということです。私はそれを示す非常に短いビデオクリップを記録した:https://www.youtube.com/watch?v=7pFY8rDK7Rg&feature=youtu.be –

+0

あなたのカメラが回転しているからだ。 'transform.right'と' vector3.right'のどちらも、オブジェクトをカメラに対して右に翻訳するつもりはありません。 – Soviut

関連する問題