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

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

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

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

Unity3D

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

Q&A

解決済

1回答

6557閲覧

unity 3Dの座標について教えて下さい。

Kuronekoya

総合スコア26

C#

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

Unity3D

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

0グッド

0クリップ

投稿2016/04/25 11:19

編集2016/04/25 11:41

いつもお世話になっております。

今回お伺いしたいのは、座標についてです。
GameObjectを作った時にpositionを設定するのですが、0, 0, 0と設定しても場所が違います。

ワールド座標、スクリーン座標、ビューポート座標などがあることは調べてわかっていますが、どのような時にどの座標が使われるのかがわからず…

異なる2つのPrefabを作った時、X,Y,Z軸、全てを0に合わせても実際のPositionが異なり、場所が合いません。
ちなみのそれらのPrefabは、cubeをいくつか合わせてPrefabにしています。

どうすれば座標を合わせることができるのか、ご教授願えますでしょうか。

何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

親子関係によるズレの可能性があります。

まず、インスペクター上で指定するPositionはローカル座標です。
つまり「1つ上の親の位置=自分の原点」になります。

例えば、以下のような親子関係を持つオブジェクトの場合。(カッコ内はインスペクター上の座標)
・Parent (10,10,10)
└Child (5,5,5)
└Child2 (5,5,5)

実際に存在する位置(=ワールド座標)は以下ののようになります。
Parent (10,10,10)
Child (15,15,15)
Child2 (20,20,20) ←1つ上の親=Childが原点となるため

この為、子のオブジェクトが原点からズレていると、親がワールド座標の(0,0,0)にあっても見た目上はズレているように見えます。

なお、スクリプトで設定する場合、
transform.position はワールド座標、
transform.localPosition はローカル座標となります。

また、スクリーン座標とビューポート座標は、「カメラに映っている画面」を元にした算出方法となりますので今回は無関係です。

投稿2016/04/26 03:32

sakura_hana

総合スコア11427

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

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

Kuronekoya

2016/04/26 07:01

sakura_hana様、ご回答ありがとうございます。 確認したところ、おっしゃる通りでした…!!親子関係が原因だったのですね。親子の座標を設定しなおしたところ、希望通りの座標に置くことができました。 助かりました、どうもありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問