前提
UnityとOculus Quest を使っています
Unity のバージョンは2021.3.12f1です。
実現したいこと
ユーザーの回転に合わせて、ユーザーが回転した分だけオブジェクトをその場ではなく、ユーザーの周りを回転させたいです。
現在なんとかカメラの向きを取得してオブジェクトに反映させることはできたのですが、このままではオブジェクトはその場で回転してしまっています。
イメージで行くと自分が地球でオブジェクトが月なのですが、一定の速度で回転させるのではなく自分が回転した分だけ回転させたいのでRotate aroundではうまくいきそうにありません。
後々自分が回転した回転量の半分だけ周りを回転させたりしたいのでQuaternionを使いたいのですが、今のプログラムとどう組み合わせていいものか使い方が全く分かりません、、、
発生している問題・エラーメッセージ
上に書いたことですが、その場ではなく自分の周りを自分が回転した量に合わせて回転させたいです。
現在のプログラムを張りますのでここからどうしたらいいか助けてください。。。
該当のソースコード
ソースコード using System.Collections; using System.Collections.Generic; using UnityEngine; public class theta_return : MonoBehaviour { public GameObject hmd_camera; public static float direction_return(Quaternion q) { Vector3 vct_post = q * Vector3.forward; return Mathf.Atan2(vct_post.x, vct_post.z) * Mathf.Rad2Deg; //角度を補正して返す } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { Transform my_trans = transform; Transform camera_trans = hmd_camera.transform; Quaternion camera_q = camera_trans.rotation; float camera_dir = direction_return(camera_q); Quaternion q = Quaternion.AngleAxis(camera_dir, Vector3.up); my_trans.rotation = q; } } ### 試したこと Rotate aroundを調べて試したのですが自分の周りを一定の速度で回るプログラムから、コレとどう組み合わせていいのかわかりませんでした。 最終的には自分の回転速度の半分で回転させたり1/3の速度で回転させたり(オブジェクトの初期位置を左手90度の方向にして旅人算のように視点を追いつかせたりしたい)のでQuaternion を使いたいのですが今自分が作ったものと組み合わせ方がわかりません unityもc#も初心者なので調べてもなかなか解決しないので質問させていただきました。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/17 04:47 編集
2022/11/17 05:45 編集
2022/11/17 06:49
2022/11/17 08:33
2022/11/17 10:55
2022/11/18 03:18
2022/11/18 07:43 編集