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

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

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

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

Unity3D

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

Q&A

解決済

3回答

3275閲覧

Unity ワープした先のキャラクターの向き

alb14laq

総合スコア27

C#

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

Unity3D

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

0グッド

1クリップ

投稿2016/11/19 01:19

編集2016/11/21 09:25

キャラクターをワープさせるプログラムはできたのですが、飛んだ先でのキャラクターの向きがうまくいきません。
WarpPointオブジェクトを作って、それに衝突するとキャラクターが指定の位置に飛ぶというようになっていますが、
□=WarpPoint

□←この向き(西向き)でキャラクターが当たり判定に当たり指定の位置に飛ぶとそのままの向き(西向き)になってしまいます。
←(西向き)で当たっても↑(北向き)になるようにしたいのですが、、

C#

1public GameObject player; 2void Start() 3 { 4 player = GameObject.Find("FirstPersonCharacter"); 5 } 6 7void OnTriggerEnter(Collider collider) 8 { 9 if (collider.gameObject.tag == "Player") 10 { 11 collider.gameObject.transform.position = new Vector3(3, 1, -13); 12 //collider.gameObject.transform.LookAt(new Vector3(0, 0, 0)); 13 player.transform.LookAt(new Vector3(0, 0, 0)); 14 } 15 }

追記

C#

1void Start() 2 { 3 player = GameObject.Find("FirstPersonCharacter"); 4 //Transform target = GameObject.Find("Cube").transform; 5 //player.transform.LookAt(target); 6 } 7 8void OnTriggerEnter(Collider collider) 9 { 10 if (collider.gameObject.tag == "Player") 11 { 12 collider.gameObject.transform.position = new Vector3(3, 1, -13); 13 Transform target = GameObject.Find("Cube").transform; 14 //collider.gameObject.transform.LookAt(target); 15 player.transform.LookAt(target); 16 } 17

向かせたい方向にCubeを置き、そのCubeを見る方向に向くというようなコードも書いてみましたが、だめでした。

コードに修正点や他の方法のアドバイスなどいただけたら幸いです。

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

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

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

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

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

guest

回答3

0

ベストアンサー

FirstPersonController がキャラクターの回転を上書きしていると考えられます。
試しに、LookAtの後に下記を追加してみてください。目標を向いたでしょうか?

player.GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled = false;

FirstPersonController の m_MouseLook あたりが怪しいと思い、ざっと試してみたことはこちらです。

// FirstPersonController.cs に下記を追加 public void ResetMouseLook(){ m_MouseLook.Init(transform , m_Camera.transform); }
// LookAt の後に次を追加 player.GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController> ().ResetMouseLook ();

これで一応目的の向きになりますが、その後のカメラが若干傾きます。。
後は、、頑張ってください^^

投稿2016/11/22 01:07

Kapustin

総合スコア1186

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

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

alb14laq

2016/11/24 09:34

遅くなりました、なんとか解決することができました。 丁寧で迅速な回答ありがとうございました。お疲れ様でした。
guest

0

試しに以下のように書き直してみてください。
これで常に東を向くようなら、次はxを-1にして常に西を向くか確認してください。

C#

1player.transform.LookAt(new Vector3(0, 0, 0)); 23collider.gameObject.transform.LookAt(new Vector3(1, 0, 0));

もしもちゃんと動くようなら、
player = GameObject.Find("FirstPersonCharacter");
のあたりが怪しいです。

投稿2016/11/21 09:59

ishi9

総合スコア1294

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

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

alb14laq

2016/11/21 10:32 編集

そちらのコードにしても結果は同じになりました。 ここのコードじゃないどこかが間違っているのでしょうか、、
guest

0

C#

1player.transform.LookAt(new Vector3(0, 0, 0)); // 原点を向く != 北を向く

投稿2016/11/21 08:05

ozwk

総合スコア13521

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

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

alb14laq

2016/11/21 08:15

回答ありがとうございます。 そちらのコードでできるかと思ったのですができませんでした、、 指定の位置に飛ばすことはできたのですがLookAtが全く反応していないような感じです
ozwk

2016/11/21 08:18

原点を向くコード書いているのに北向けるわけ無いじゃんと言いたかったんです。
alb14laq

2016/11/21 08:24

それはすみませんでした。 newVectorの値が間違っているのかと思い値を変えたりしても何も変わらなかったのでLookAt自体が間違いということなのでしょうか?
ozwk

2016/11/21 08:26

new Vector3(3, 1, -13+1)とかじゃだめですか?
alb14laq

2016/11/21 08:31

試してみましたが、やはり衝突した時の向きのままワープしてしまいます。
ozwk

2016/11/21 09:25

東から当たるとどうなります?
alb14laq

2016/11/21 09:38

東から当たっても東の向きのまま飛んでしまいます。 移動するのを一度消してLookAtのみで試してみたのですが何も起こらなかったです、、
ozwk

2016/11/21 23:23

別のコードでキャラクターの向きを制御していれば そちらも載せるとなにかわかるかもしれません
alb14laq

2016/11/21 23:43

キャラクターの向きを制御しているコードは上記の2パターンのみですね… キャラクターはUnityのFirstPersonControllerです。
alb14laq

2016/11/21 23:45

ちなみにFPCのコードをいじっています。左右の移動をできなくしています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問