Quaternionとは、XYZで軸を決めてWで捻る(ひねる)代物。
private Quaternion m_qBaseQuat; private GameObject m_Target; void Start() { m_qBaseQuat = gameObject.transform.rotation; } void Update() { if (m_Target != null) { Vector3 axisY = new Vector3(0, 1, 0); Vector3 dir = (m_Target.gameObject.transform.position - transform.position).normalized; float fRotY = Mathf.Atan2(-dir.y, dir.x); transform.rotation = m_qBaseQuat * Quaternion.AngleAxis( (fRotY * Mathf.Rad2Deg), axisY); } }
例えばこれだと、m_qBaseQuatに起動時のQuaternionを保存しておいて、m_qBaseQuatから相対的にm_Target(標的)の向かって捻ることになる。 キャラを振り向かせたり、2Dのミニマップとかで表示する矢印とかに使える。