「今日まなび」は最低1日1h、ゲーム作るために学びたいことなんでもいいから学んでいくコーナー。
完全自分用でまとめることは考えなくてOK.1記事1h。(1hでどんだけ学べるかのスピード感もみていきたいので)
1hのうちに次回学ぶことも決定しておくこと
環境:unity2021.3.40f
今日の学び
今回はQuadなど3Dモデルの回転についてです。Quadでやってて2DみたいになってますがUIの話ではないよ!
前提:Transfrom.localEulerAngles を変えるとモデルの中心を基準に回転する
単純にTransfrom.localEulerAngles
を変えると、モデルの中心を基準に回転します。
わかりやすいように赤い四角はQuadの中心=基準点の位置に配置しています。
方法1:Transfrom.RotateAround を使ってみる
この基準点を別の位置に変えたい場合、Transfrom.RotateAround
を使う。
Transfrom.RotateAround
には以下の引数で渡す。
・中心となる位置のワールド座標 →今回は赤い四角のワールド位置 ・回転軸 →XYZ軸で回転させたい軸のフラグを立てればいいみたい。今回はZ軸回転させたいので、(0,0,1)を渡している ・回転度数の加算値 →加算値だということに注意
以下のコードを実行してみると足元を中心に回ってくれる。
using UnityEngine; public class Test010 : MonoBehaviour { public Transform centerPosition; private void Update() { this.transform.RotateAround(centerPosition.transform.position, new Vector3(0, 0, 1), Time.deltaTime * 30); } }
方法2:基準点を親にして親を回転させる方法
回転の起点となるオブジェクトを回転したいオブジェクトの親にして親を回転させるという方法もある。
親子関係はこのような感じ。CenterPointが中心点となる赤い四角です。
そして作った親のオブジェクトのTransform.localEulerAngles
を変更して回転させます。
using UnityEngine; public class Test010_2 : MonoBehaviour { private void Update() { this.transform.localEulerAngles += new Vector3(0, 0, Time.deltaTime * 30); } }