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

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

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

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

Unity3D

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

Unity

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

Q&A

1回答

4071閲覧

親オブジェクトが回転しても、子オブジェクトは回転させないようにしたい。

MorrisJP

総合スコア10

C#

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

Unity3D

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

Unity

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

0グッド

1クリップ

投稿2016/10/07 19:27

Unityにて、FPSゲームを制作しているのですが
子オブジェクトの回転軸を固定させる方法はありませんか?
https://gyazo.com/fbce44db53edecc4ae72052c4249598c
現在このような関係になっていて
Playerは自分が操作するキャラクター
Main Cameraは視点用のもので
AK-74uは持っている武器
Muzzle は弾が出るところ
Muzzle_Effect はエフェクトを付ける用のもの
です。

Playerを回転させると、子オブジェクのMainCameraも回転して、回転させた方向を向いて、視点を動かしたようになるのですが、これはこれでいいんです。
しかしMuzzleとMuzzle_Effectは回転させてしまうと、発射した弾やエフェクトが変な方向を向いてしまうのです。

僕がやりたいのは、この二つを親オブジェクトの回転の影響を受けさせないようにすることです。
子オブジェクトを回転させないようにする方法はいくつかあるようなのですが、実行してみたところ、MainCameraの回転まで止まってしまうので、視点を動かすことができなくなります。

ご教授お願いします。

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

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

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

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

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

guest

回答1

0

前もってローテーションを取得しておいてレイトアップデートで再代入ってのはどうですか?
※下記コードで動きました。

C#

1[SerializeField] 2GameObject Muzzle; 3[SerializeField] 4GameObject Muzzle_E; 5 6Quaternion rotationMuzzle; 7Quaternion rotationMuzzle_E; 8 9void Awake() 10{ 11 rotationMuzzle = Muzzle.transform.rotation; 12 rotationMuzzle_E = Muzzle_E.transform.rotation; 13} 14void LateUpdate() 15{ 16 Muzzle.transform.rotation = rotationMuzzle; 17 Muzzle_E.transform.rotation = rotationMuzzle_E; 18}

投稿2016/10/08 06:36

編集2016/10/09 11:19
IShix

総合スコア1724

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

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

MorrisJP

2016/10/08 09:15

回答ありがとうございます。 コードを入力してみたところ、 rotationMuzzle_E.transform.rotation = rotationMuzzle_E; のところのtransformで「Quaternionにtransformの定義が含まれていない」とVS2015にてエラーが出てしまうのですが。解決策はありますでしょうか?
IShix

2016/10/09 11:19

返信遅れました。 rotationMuzzle_E.transform.rotation = rotationMuzzle_E; のコード書き間違ってましたので本文も修正します。正しくは下記です。失礼しました。 Muzzle_E.transform.rotation = rotationMuzzle_E;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問