明日への断片

ゲーム制作やプログラミング関する記事を中心に更新していこうと思います。

7欠片目:ゲーム制作に便利な数学関数~abs編~

 こんにちは!雨が降るか降らないか微妙なとき、傘を持って出かけると雨は降らず、持たずに出かけると雨が降る。そんな運命にあるvoidです。
 今日は家で一日まったりと過ごして、たまにはこんな日があってもいいなと思いました。

数学とゲーム

 ゲーム制作と数学には切っても切れない縁があります。今回はC言語の数学関数のうち、実際にゲームを作るときにオススメなもの紹介してい行きたいと思います。

数学関数を使うには

 数学関数を使うためには<math.h>をインクルードしてあげるだけで使えちゃいます。さて、それでは実際に関数を見ていきましょう。

絶対値を求める関数

オススメ度:★★☆☆

 double fabs(double x);  /*実数*/
 int abs(int x);      /*整数*/
機能 引数として渡した値の絶対値を戻り値として返す

どちらも基本的に同じ意味ですが、fabsは実数(小数)型を扱うとき、absは整数型を扱うといった使い分けです。

■使用例

「プレイヤーと敵の距離を絶対値で求める」

下の画像(即興で用意しました)のように敵とプレイヤーが配置されているとします。
真ん中の棒人間がプレイヤーです。
f:id:yasu-game-void:20170215224021j:plain

 単純に敵とプレイヤーの距離を測るには、敵のx座標からプレイヤーのx座標を引いてあげることで求めることが出来ますね。この場合、右をx軸のプラスとすると、敵2との距離は正の値に、敵1との距離は負の値になります。
しかし、そうなってしまうとまずいことがあります。
 
 例えばプレイヤーとの距離が5以下になったとき、敵は攻撃する。という処理を追加しようとすると、敵1のようにプレイヤーの左側にいる敵は全て距離が負の値なので、距離が5以下になってしまい、常に攻撃しようとしてしまいます。かといってif文で(-5以上かつ0以下)または(0以上5以下) というのも大変面倒くさいです。
 
 そこで、abs関数を使って絶対値を求めてあげるのです。
すると、左の敵も右の敵も正の距離として扱うことが出来ますね。
地味ですが、これはこれで結構便利だったりします。

この企画は分割払いで...

他にも便利な関数はたくさんあるのですが、一度にまとめようとすると、物量的にきついので何度かに分けて紹介使用するとしましょう。明日はみんな大好き、サインコサインについて話そうかと思います。ではまた!