【Unity】Mathf.Absとは?引数の絶対値を取得できるメソッド

Mathf.Absとは? Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「Mathf.Absがどういうものなのか知りたい!」

「Absを使うとどんなことができるのか?」

というお悩みの方に向けた内容となっています。

Unityで絶対値を取得できる関数が、Mathf構造体のAbsメソッドです。

このAbsメソッドは、引数の絶対値を返すことができ、マイナスの符号を取った値を返してくれます。

Unity内での計算式などでマイナスを含めたくない時に、活用できるメソッドです。

そこでこのページでは、Unity内で絶対値を返すのに使えるMathf.Absがどういうものなのか、また使い方までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

Mathf.Absとは?

まずは、Mathf.Absがどういうものなのかを紹介していきます。

絶対値を取得できるMathf構造体のメソッド

Mathf.Absとは、Mathf構造体で定義されている絶対値を取得することができるメソッドです。

絶対値というのは、原点0からの距離を表す値のことです。

例えば、「8」「-8」は異なる値ですが、絶対値はどちらも同じ「8」(0からの距離)となります。

ちなみに数学的には、以下のような式(| |で挟む)で表すことができます。

| 8 | = 8
| -8 | = 8

Mathf.Absを使うと、このように絶対値の値を取得する計算を行ってくれます。

なお、Mathf構造体には、他にも様々な計算結果を返してくれるメソッドが定義されています。

マイナスの符号を消したいときに使える

Unityにおいて、このMathf.Absは負の符号(-)を消したい場合に使われることが多いです。

例えば、目標地点からの距離に合わせてスコアを計算するといった場合に、目標地点より奥だと、スコアの計算式上でマイナスが表示されてしまいます。

この際、Mathf.Absで先に値を絶対値で取得しておくことで、スコアに負の符号が表示されなくなります。

他にも、オブジェクトの速度を表したいときなどで、マイナスが出ないようにMathf.Absが使われていることがあります。

Mathf.Absの使い方:引数に絶対値を取得したい値を指定するだけ

ここからは、Mathf.Absの使い方について紹介していきます。

Mathf.Absを使う際は、引数に値を入れてあげるだけで、簡単に絶対値を取得することができます。

Mathf.Abs(値);

なお、Mathf.Absはfloat型の絶対値を取得することになるので、引数に小数点の値を入れる場合は、後ろに「f」を入れておく必要があります。

例えば、「-4.8」の絶対値を取得する場合は、

using UnityEngine;

public class Test : MonoBehaviour
{
    void Start()
    {
        Debug.Log(Mathf.Abs(-4.8f));
    }
}

7行目のようにMathf.Absを使って記述してあげることで、

負の符号が取れた値を取得することができます。

また、直接数値ではなく変数を入れて、以下のように書くこともできます。

using UnityEngine;
using static UnityEditor.Experimental.GraphView.GraphView;

public class Test : MonoBehaviour
{
    public GameObject player1;
    public GameObject player2;

    void Start()
    {
        float playerPos1 = player1.transform.position.x;    // player1のX座標を取得
        float playerPos2 = player2.transform.position.x;    // player2のX座標を取得

        Debug.Log(Mathf.Abs(playerPos2 - playerPos1));  // 計算した値の絶対値を取得
    }
}

2つのオブジェクトのX座標の位置を11行目と12行目で取得しておき、それぞれを引いた際の値がマイナスならないように、14行目でMathf.Absを使って絶対値を取得しています。

まとめ

このページでは、Unityで使えるMathf.Absについて、どんなメソッドなのか、また使い方までをまとめていきましたが、いかがでしたでしょうか?

Mathf.Absとは、Mathf構造体で定義されているメソッドで、絶対値を返す処理を行ってくれます。

絶対値とは、0からの距離を表している数値で、負の符号を取り除く際に使えるメソッドです。

距離を表したり速度を表したりするのに、負の符号が不要となる際にMathf.Absで処理を行うことができます。

最後までお読みいただきまして、ありがとうございました!

コメント