この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
wiki:unity:tips:093 [2014/12/28 09:33] 127.0.0.1 外部編集 |
— (現在) | ||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== 093 Quaternionによる任意軸回転 ====== | ||
- | |||
- | ===== 概要 ===== | ||
- | Quaternionとは、XYZで軸を決めてWで捻る(ひねる)代物。 | ||
- | |||
- | <code csharp> | ||
- | private Quaternion m_qBaseQuat; | ||
- | private GameObject m_Target; | ||
- | |||
- | void Start() | ||
- | { | ||
- | m_qBaseQuat = gameObject.transform.rotation; | ||
- | } | ||
- | |||
- | |||
- | void OnUpdate() | ||
- | { | ||
- | 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); | ||
- | } | ||
- | } | ||
- | </code> | ||
- | |||
- | 例えばこれだと、m_qBaseQuatに起動時のQuaternionを保存しておいて、m_qBaseQuatから相対的にm_Target(標的)の向かって捻ることになる。 | ||
- | キャラを振り向かせたり、2Dのミニマップとかで表示する矢印とかに使える。 | ||