6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity】transform.eulerAnglesをClampする工夫

Posted at

Unityの話というか、角度の話です。

transform.eulerAnglesは0°から360°で表現されます。

例えば、-10°を代入したら、次に取得すると350°になっています。

このため、
-45°<θ<45°
で角度に制限をかけたい場合、少し困ります。

0°<θ<45°、315°<θ<360°
で制限をかければいいだけだ、と
思ってしまう方もおられるかと思われますが、
値がどちらにClampされるべきかよくわからなくなってしまいます。

これは-10°が350°となり、情報が減ったためです。

http://answers.unity3d.com/questions/227736/clamping-a-wrapping-rotation.html
ここらへんの方法で180°を境にifで場合分けをしたとしても、
なんだか汚い感じがします。

私はtransform.eulerAnglesに代入しない、他のeulerAnglesを別に保存する方法がきれいだと思いました。
仮に、1つの要素をeulerAngleXとすると

// (-∞ < eulerAngleX < ∞)
private float eulerAngleX;

// eulerAngleXに何か代入する

eulerAngleX = Mathf.Clamp(eulerAngleX, min, max);

transform.eulerAngles.x = eulerAngleX;

ということです。

他に何か良い方法があれば、教えて下さい。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?