###前提・実現したいこと
質問失礼いたします。
unityにて、オブジェクトの往復スクリプトをC#で作っています。
移動だけならできたのですが、常に移動方向にオブジェクトの正面が来るように、
回転も入れたいです。
ある地点についたら止まって一定時間180度回転して、また一定時間動き出す……というのを繰り返すイメージです。
移動だけのスクリプトは、以下の通りです。(とあるサイトのものを使用させていただいてます)
###該当のソースコード
C#
1 public Vector3 StartPos; //初期位置 2 public Vector3 EndPos; //往復後位置 3 public float time; //移動時間 4 private Vector3 deltaPos; //移動量 5 private float elapsedTime; //反転用経過時間 6 private bool bStartToEnd = true; 7 8 void Start () 9 { 10 transform.position = StartPos; 11 deltaPos = (EndPos - StartPos) / time; 12 elapsedTime = 0; 13 } 14 15 16 void Update () 17 { 18 transform.position += deltaPos * Time.deltaTime; 19 elapsedTime += Time.deltaTime; 20 21 if (elapsedTime > time) 22 { 23 if (bStartToEnd) 24 { 25 deltaPos = (StartPos - EndPos) / time; 26 transform.position = EndPos; 27 } 28 else 29 { 30 deltaPos = (EndPos - StartPos) / time; 31 transform.position = StartPos; 32 } 33 bStartToEnd = !bStartToEnd; 34 elapsedTime = 0; 35 } 36 37 } 38}
###試したこと
変数aimRotation(回転後方向)とrotTime(回転時間)を作り、
aimRotation = Quaternion.LookRotation (StartPos - EndPos);
aimRotation = Quaternion.LookRotation (EndPos - StartPos);
これをif (elapsedTime > time) 以下のif文にそれぞれ入れて、
transform.rotation = Quaternion.Slerp (transform.rotation, aimRotation, rotTime * Time.deltaTime);
を外でやろうと思いましたが、うまくいきませんでした。
if (transform.position == StartPos || transform.position == EndPos)
などの文も足すのかどうか……思案中です。
勉強が足りておりませんが、ご指導してくださると幸いです。
###補足情報(言語/FW/ツール等のバージョンなど)
unity5です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。