2017-05-19 3 views
0

私は円の形(水平キー入力あり)で移動している立方体をコードの下に提案しています。位置軸を時刻に変換する式

public class Oscillator : MonoBehaviour { 
    float timeCounter = 0; 

    float speed,width, height; 

    public float yPosition = 30; 
    // Use this for initialization 
    void Start() { 
     speed = 2; width = 10; height = 10; 
    } 

    // Update is called once per frame 
    void Update() { 

     timeCounter += Time.deltaTime * speed * Input.GetAxis("Horizontal"); 
     float x = Mathf.Sin (timeCounter)* height; 
     float y = yPosition; 
     float z = Mathf.Cos (timeCounter) * width; 
     transform.position = new Vector3 (x, y, z); 

    } 
} 

ここで私のオブジェクトはうまくいく円形に動いています。今私はオブジェクトの動きを時間に翻訳したいと思っています。 は私のオブジェクトのx位置は1、それは私に時間を与えるべきである1.0

であれば、それは私のオブジェクトのx postionに応じて増減それが1.5であるならば、それは私に1.5

を与える必要があります

を想定してみましょう(または可能であればz)。

私は0から9.999に開始し、その後、その後、0を減らす-1に-9それは減少0とその初期位置に到達なるとなっている私のオブジェクトのx位置をログに記録しました。この循環的な動きxの値は私のために奇妙です、私は時間に私のxの位置を変換することができます任意の数式を形成することができません。 この純粋な数学と3次元数学の問題に誰かが助けてくれますか?

答えて

0

次の操作を試みることができる:

は時計の12のように、円の起源やサークルの0間のベクトルを取得します。これは一定です。

次に、円の原点と現在の点の間にベクトルがあります。

は、以下のことを試してみてください。

Vector3 from = new Vector3(0,0,1);/This is your 12 
Vector3 to = GetCurrentVector(); 
float angle = Quaternion.FromToRotation(Vector3.up, to - from).eulerAngles.z; 
Debug.Log(angle/360f); 
+0

私はあなたの答えをundertandませんでした。何がここにあるか –

+0

2番目のものはであることを意図していた。私は編集しました。 – Everts

関連する問題