はじめに
今日はUnityの計算処理の勉強していきます。
循環は剰余演算子(%)を使うやり方もあると思うのですが、公式が用意しているAPIを使ってやってみようと思います。
環境
この記事の情報は次のバージョンで動作確認しています。
* MacOS Monterey (12.1)
* Unity (2021.3.2f1)
Mathf.Repeatについて
public static float Repeat (float t, float length); t => 値を入れる length => 最大値(これ以上なったら0からリスタート)
Mathf.Repeat
はfloat型用の剰余演算子(%)みたいなものです。
但し、t
にマイナスの値を入れても想定の挙動にならないです。
簡単な検証をしました。
var max = 100; var val_1 = 150; var val_2 = 200; var val_3 = -150; // 負の値 Debug.Log(Mathf.Repeat(val_1, max)); // => 50 Debug.Log(Mathf.Repeat(val_2, max)); // => 0 Debug.Log(Mathf.Repeat(val_3, max)); // => 50
0 〜 MAX で値を循環させる方法
これはそのままMathf.Repeat
を使えばよいです
例えば 0 〜 100 を循環させるには
var num = 125; // ここは動的に変わる値とします var result = Mathf.Repeat(num, 100); Debug.Log(result); // => 25
角度を -180 〜 180 で循環させるには
Mathf.Repeat
は0をスタートとするのでちょっと工夫が必要です。
var result = Mathf.Repeat(num + 180, 360) - 180;
参考にしたサイト
【Unity】角度を0~360度や-180~180度の範囲に正規化する(循環させる) | ねこじゃらシティ
おわりに
最後まで見ていただきヘペトナス!
読者登録・Twitterのフォローもお願いします。