⚖️
Unityでジンバルを作る
この記事はUniMagic Advent Calendar 2024の6日目の記事です
相変わらずゆにまじに関係なさそうな話題ですが、一応関係あります
(そろそろネタが尽きてきました)
VRChatにはタブレットなど、ユーザーが自由にピックアップ可能なオブジェクトがたくさんあります
この際、UIなど左右へ傾かないように制限をかけたいことがあるため、そのためのジンバルを実装してみました
ソースコード
public class Gimbal : MonoBehavior
{
[SerializeField] private GameObject rootGameObject;
public void Update()
{
ApplyGimbal();
}
private void ApplyGimbal()
{
var forwardVector = rootGameObject.transform.forward;
var globalUp = Vector3.up;
var targetRotation = Quaternion.LookRotation(forwardVector, globalUp);
rootGameObject.transform.rotation = targetRotation;
}
}
解説
var forwardVector = rootGameObject.transform.forward;
オブジェクトの前方向きのベクトルを取得します
var globalUp = Vector3.up;
グローバルの上向きベクトルを取得します
var targetRotation = Quaternion.LookRotation(forwardVector, globalUp);
前方の方向を回転軸として、グローバル座標系の上を向くように回転を計算します
rootGameObject.transform.rotation = targetRotation;
オブジェクトへ回転を反映します
おわりに
おそらく私の調べ方が悪いのですが、これを作るのに1日くらいかかったので、意外と簡単に作ることができて良かったです
宣伝
魔術学舎United、略してUniMagic(ユニマジック)とは、VRの世界に関係の深い技術を学ぶ学園空間型のイベントです。
15名~18名程度で構成されるクラスで、2週間の授業と1週間の修了制作を通して、技術についての知見を深めていきます。
Discussion