質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

2668閲覧

オブジェクトの往復アニメーションスクリプトに方向転換を加えたい

toricotori

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/10/13 13:56

###前提・実現したいこと
質問失礼いたします。
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です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

回答にはなっていない気がしますが
自分なら面倒なのでiTweenを利用します

投稿2017/11/16 19:44

編集2017/11/16 19:44
MasujimaRyohei

総合スコア422

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問