###実現したいこと
1、カメラの回転に合わせてUnityちゃんも連動して回転するようにしたい。
→Unityちゃんの回転速度とカメラの回転速度を合わせたい。
2、カメラの縦回転が原点を軸に回転しているのを、指定のポジション、
もしくは指定のターゲットを支点に回転するようにしたい。
→自己解決、スクリプトをアタッチしているオブジェクトのポジションが回転の起点のため、
ポジションの数値を変更で解決。
Script
using UnityEngine; using System.Collections; using UnityStandardAssets.CrossPlatformInput; public class firstParsonCam : MonoBehaviour { public Transform target; private float horAngle; [Range(0f, 10f)] [SerializeField] private float m_TurnSpeed = 3f; // ユーザー入力からリグが回転する速度。 [SerializeField] private float m_TurnSmoothing = 0.5f; // マウスの回転のぎこちなさを軽減するために、回転入力にどの程度のスムージングを適用するか。 private float m_LookAngle; // リグのy軸回転。 private float m_TiltAngle; // ピボットのX軸回転。 private Vector3 m_PivotEulers; private Quaternion m_PivotTargetRot; private Quaternion m_TransformTargetRot; void Start() { m_PivotEulers = target.rotation.eulerAngles; m_PivotTargetRot = target.transform.localRotation; m_TransformTargetRot = transform.localRotation; } void Update() { if (Input.GetMouseButton(0)) HandleRotationMovement(); } private void HandleRotationMovement() { if(Time.timeScale < float.Epsilon) return; // ユーザー入力の設定 var x = CrossPlatformInputManager.GetAxis("Mouse X"); var y = CrossPlatformInputManager.GetAxis("Mouse Y"); // 回転速度と水平方向の入力に比例した量だけ、視角を調整します。 m_LookAngle += x*m_TurnSpeed; m_TiltAngle += y*m_TurnSpeed; // リグ(ルートオブジェクト)をY軸のみの周りに回転させます。 m_TransformTargetRot = Quaternion.Euler(m_TiltAngle, m_LookAngle, 0f); target.transform.rotation = Quaternion.Euler(0f,m_LookAngle,0f); if (m_TurnSmoothing > 0) { target.localRotation = Quaternion.Slerp(target.localRotation, m_PivotTargetRot, m_TurnSmoothing * Time.deltaTime); transform.localRotation = Quaternion.Slerp(transform.localRotation, m_TransformTargetRot, m_TurnSmoothing * Time.deltaTime); } else { target.localRotation = m_PivotTargetRot; transform.localRotation = m_TransformTargetRot; } } }
if (m_TurnSmoothing > 0)の中にtargetにもスムージングをかける文をつける事が出来れば
解決すると思っているのですが、その文がどう書けばいいのか分からず困っています。
補足情報
Unity.2018.3ver
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。