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

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

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

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

Unity

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

Q&A

解決済

1回答

2463閲覧

unity Create Empty で色々まとめた時

osamumoyamoyas1

総合スコア18

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2018/01/08 11:42

unityに関しての質問
###現在の状況
台形に近い形をunityで作るため、Create Empty で gameobject をつくり、その中に(子として)部品を突っ込んでひとつの台形になるようにした。
しかし、 gameobject を選択したときに出るx,y,z軸の矢印の中心が、台形の中心ではない場所に存在するため、
回転しようとすると(TransformのRotationの値を変えると)台形全体の位置まで大きく動いてしまう


この矢印の中心を移動させる方法を教えていただけると助かります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

やりたいことは、ようするに複数のGameObjectの中心をPivotにしたいということでしょうか。矢印というのはマニピュレータのことですよね。UnityではゲームオブジェクトのPivotを変更できないそうなのでUnityで変更させるとしたらEmptyのGameObjectで代用することになります。

もう一つEmptyのGameObjectを用意してその台形の中心に置いて、台形の入ったEmpty GameObjectを子にすればいいと思います。手動でやるのが簡単ですが、ピッタリと中心にしたいのならスクリプトでやった方が確実です。

その台形がどういう構成かは分かりませんが、例えば4つのGameObjectから構成されているとして、それらの座標からスクリプトで中心を計算して、そこにEmpty GameObjectを移動させて4つのGameObjectの親の親にする例文を考えてみました。

親の親にするEmpty GameObjectにアタッチするスクリプトです。

C#

1using UnityEngine; 2 3public class ParentCenter : MonoBehaviour { 4 5 public GameObject go1;//4つのGameObject 6 public GameObject go2; 7 public GameObject go3; 8 public GameObject go4; 9 10 public GameObject group1;//4つのGameObjectが入っているEmpty GameObject 11 12 Vector3 posA; 13 Vector3 posB; 14 Vector3 posC; 15 16 void Start () { 17 posA = (go1.transform.position + go2.transform.position)/2; 18 posB = (go3.transform.position + go4.transform.position)/2; 19 posC = (posA + posB)/2; 20 21 transform.position = posC;//4つのGameObjectの中心座標に移動 22 23 group1.transform.parent = transform;//group1を子にする 24 } 25 26 void Update () { 27 transform.Rotate(1, 1, 0);//回転させる 28 } 29}

 
実行するとこんな感じです。

イメージ説明

数が多くなれば配列などを使うなどするといいかもしれません。スクリプトで座標を割り出したら親の親に手動で設定するのもいいかと思います。

投稿2018/01/09 00:56

編集2018/01/09 13:24
cloudmaterial

総合スコア163

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問