こんにちはUnity初心者です。
今作ってるゲームで、プレイヤーに追従させないといけないので調べました。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Camera : MonoBehaviour 6{ 7 [SerializeField] private GameObject targetObj; 8 private Vector3 _targetPos; 9 private Vector3 _roteuler; 10 11 // Start is called before the first frame update 12 void Start() 13 { 14 _targetPos = targetObj.transform.position; 15 _roteuler = new Vector3(transform.localEulerAngles.x, transform.localEulerAngles.y, 0); 16 } 17 18 // Update is called once per frame 19 void Update() 20 { 21 rotateCameraAngle(); 22 } 23 24 // カメラの回転制御 25 private void rotateCameraAngle() 26 { 27 // targetの移動量分、自分(カメラ)も移動する 28 transform.position += targetObj.transform.position - _targetPos; 29 _targetPos = targetObj.transform.position; 30 _roteuler = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, targetObj.transform.eulerAngles.z); 31 transform.eulerAngles = _roteuler; 32 } 33}
すると以下のスクリプトになりました!
スクリプトリファレンスなどを見ながら頑張ってみました。
https://docs.unity3d.com/ja/2019.4/ScriptReference/Transform-eulerAngles.html
追従までは行けたのですが、カメラをプレイヤーの後ろから見る感じにしたいです。
やりたい挙動としてはマリオカートみたいに後ろから見る感じにしたいです。
なのでY軸も見た感じ固定に見えたので、固定にしております。
loockRotationでいけるかなと思って試してみてもうまくいきません
https://docs.unity3d.com/ja/current/ScriptReference/Quaternion.LookRotation.html
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Camera : MonoBehaviour 6{ 7 [SerializeField] private GameObject targetObj; 8 private Vector3 _targetPos; 9 private Vector3 _roteuler; 10 11 // 回転の制限 12 [SerializeField] private float angle_LimitUp = 45f; 13 [SerializeField] private float angle_LimitDown = -45f; 14 15 // Start is called before the first frame update 16 void Start() 17 { 18 _targetPos = targetObj.transform.position; 19 _roteuler = new Vector3(transform.localEulerAngles.x, transform.localEulerAngles.y, 0); 20 } 21 22 // Update is called once per frame 23 void Update() 24 { 25 rotateCameraAngle(); 26 } 27 28 // カメラの回転制御 29 private void rotateCameraAngle() 30 { 31 // targetの移動量分、自分(カメラ)も移動する 32 transform.position += targetObj.transform.position - _targetPos; 33 _targetPos = targetObj.transform.position; 34 _roteuler = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, targetObj.transform.eulerAngles.z); 35 //transform.position = targetObj.transform.up + _roteuler; 36 transform.rotation = Quaternion.LookRotation(targetObj.transform.forward,targetObj.transform.up); 37 transform.eulerAngles = _roteuler; 38 } 39}
どうかご回答お願いします。説明などもしてくださると勉強になります。
カメラを子にするのはなしです。後々いじりたいので。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/02 13:20