Unityの数学関数

投稿者: | 2014年3月28日

リファレンス読まずに失敗しちゃったDestroyの記事と似たような話。

秒数を計測する時に少数切り捨てたいなーと思って数学関数のMath.floorを使おうとしたんです。
でMath.floor(秒数)と書きました(この時はJS使ってた)
するとこんなエラーが。

BCE0005: Unknown identifier: 'Math'.

不明な識別子・・・・?ぇ・・・・?なんで・・・・?あるやろ・・・?ああああん?
となってました。

でまあこれはDestroyの時とはちょっと毛色が違うかもしれませんが、UnityではMath関数ではなくMathf関数を使うようです。fってなんぞ?って感じですがとにかくMathfらしいです。これはJSもC#も共通。

記事書いてたので今更ながら調べてみました。
C#の場合はどうもMathが使えないって訳でもないようです。
using System;と記述してSystemをimportすれば使えます。
かと言ってusing System.Math;は名前空間がうんたらかんたらとエラーを吐きます。
JSの場合は・・・・・ごめんなさい分かりませんでした。

そしてfの謎が解けました。通常のMathはdoubleを扱うのでfloat型を扱うMathfを用意した模様。精度は落ちるもののUnityではfloat型がメインになっているし、何より処理がdoubleより高速なので用意されたと思われます。
このフォーラムにそんな感じのことが書かれていました。

その他にもMathfにはUnityが用意しただけあってMathには存在しない便利な関数が多数実装されているようです。
下記のサイトに一覧化されているので一読すると良いと思います。
覚えておくと便利なMathf関数 – Unityな日々(Unity Geek)

合ってるかどうか怪しいような内容も書きましたが、基本的にはUnityではMathf推奨と考えるのが一般的なようです。
Mathじゃないよ!Mathfだよ!って事を書きたかっただけの記事がこんなに掘り下げるとは思ってなかった・・・・やっぱ書くってことはいいことですな。


コメント

Loading Facebook Comments ...

コメントを残す

No Trackbacks.