親の回転をなかったことにしたい
シーンを組み立てていたら、なんかのオブジェクトにスプライトを追加したら親に回転が入ってスプライトまわりまくっていた。
ということがあったりなかったりしてしまったときは、こんな感じで親の回転を打ち消すことができますよ。
役に立つかどうかは、おいておいて。
ローカルで反映する場合
transform.localRotation = Quaternion.Inverse(transform.parent.rotation);
グローバルで反映する場合
transform.rotation = Quaternion.identity;
使用前
使用後
※回転させてないのは右の1つだけ
回転は・・・
クォータニオンのInverseでなかったことにできるよ。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine;
namespace Chigusa
{
/// <summary>
/// 回転を打ち消す
/// (スプライトなどで常に正面を向かせるなど)
/// </summary>
[ExecuteInEditMode]
[DisallowMultipleComponent]
public class RotationCancel : MonoBehaviour
{
[Tooltip("Edit中にも反映させる")]
public bool executeInEditMode = true;
/// <summary>
/// Update
/// </summary>
void Update()
{
#if UNITY_EDITOR
if (!executeInEditMode)
return;
#endif
// 打ち消す
if (transform.parent)
transform.localRotation = Quaternion.Inverse(transform.parent.rotation);
else
transform.localRotation = Quaternion.identity;
}
}
}
価格:1,384円
(2019/8/14 14:28時点)
0 件のコメント :
コメントを投稿