7欠片目:ゲーム制作に便利な数学関数~abs編~
こんにちは!雨が降るか降らないか微妙なとき、傘を持って出かけると雨は降らず、持たずに出かけると雨が降る。そんな運命にあるvoidです。
今日は家で一日まったりと過ごして、たまにはこんな日があってもいいなと思いました。
数学とゲーム
ゲーム制作と数学には切っても切れない縁があります。今回はC言語の数学関数のうち、実際にゲームを作るときにオススメなもの紹介してい行きたいと思います。
数学関数を使うには
数学関数を使うためには<math.h>をインクルードしてあげるだけで使えちゃいます。さて、それでは実際に関数を見ていきましょう。
絶対値を求める関数
オススメ度:★★☆☆
double fabs(double x); /*実数*/ int abs(int x); /*整数*/
機能 | 引数として渡した値の絶対値を戻り値として返す |
---|
どちらも基本的に同じ意味ですが、fabsは実数(小数)型を扱うとき、absは整数型を扱うといった使い分けです。
■使用例
「プレイヤーと敵の距離を絶対値で求める」
下の画像(即興で用意しました)のように敵とプレイヤーが配置されているとします。
真ん中の棒人間がプレイヤーです。
単純に敵とプレイヤーの距離を測るには、敵のx座標からプレイヤーのx座標を引いてあげることで求めることが出来ますね。この場合、右をx軸のプラスとすると、敵2との距離は正の値に、敵1との距離は負の値になります。
しかし、そうなってしまうとまずいことがあります。
例えばプレイヤーとの距離が5以下になったとき、敵は攻撃する。という処理を追加しようとすると、敵1のようにプレイヤーの左側にいる敵は全て距離が負の値なので、距離が5以下になってしまい、常に攻撃しようとしてしまいます。かといってif文で(-5以上かつ0以下)または(0以上5以下) というのも大変面倒くさいです。
そこで、abs関数を使って絶対値を求めてあげるのです。
すると、左の敵も右の敵も正の距離として扱うことが出来ますね。
地味ですが、これはこれで結構便利だったりします。
この企画は分割払いで...
他にも便利な関数はたくさんあるのですが、一度にまとめようとすると、物量的にきついので何度かに分けて紹介使用するとしましょう。明日はみんな大好き、サインコサインについて話そうかと思います。ではまた!