【ハルシオンブログ】Mathf.Clampって使ってますか?ゲーム作ってると意外と使うやーつ。
こんにちは。坂内っす。
もうだいぶ春になりましたね。
暖かい日が続いています。
このまま夏になればコロナも少しは落ち着いてくるんでしょうか・・・
Unityでゲームを作る上で、Mathf.Clampって結構使いますよね?
簡単なMathf.Clampのお話をしようと思います。
Mathf.Clampとはなんでしょうか?
【リファレンス】
https://docs.unity3d.com/jp/current/ScriptReference/Mathf.Clamp.html
最小と最大の値を設定し、その範囲内に値を制限するやつです。
「HPは0以上でマイナスにはならない」や、「攻撃したときのダメージは攻撃力ー防御力だけど、0以下にはならない」とか、●以上●以下という制限をするときに使います。
(0以上とかばっかりでわかりにくいかも)
最大ダメージはいい感じにするとして、こんな感じの計算式にすると、ダメージが0未満にはならないので、防御力のほうが高いときにHPが回復といったことがなくなります。
ほかにもキャラの移動の際に、画面端を考慮した場合に、X座標がいくつからいくつまでしか移動できない等の制御にも使えますよね!
ゲームは結構●~●までの制限というのがあると思うので、使う機会は色々ありそうですね!
ってことで、今日はこれだけ!
あでゅ~ノシ
もうだいぶ春になりましたね。
暖かい日が続いています。
このまま夏になればコロナも少しは落ち着いてくるんでしょうか・・・
Unityでゲームを作る上で、Mathf.Clampって結構使いますよね?
簡単なMathf.Clampのお話をしようと思います。
Mathf.Clampとはなんでしょうか?
【リファレンス】
https://docs.unity3d.com/jp/current/ScriptReference/Mathf.Clamp.html
最小と最大の値を設定し、その範囲内に値を制限するやつです。
「HPは0以上でマイナスにはならない」や、「攻撃したときのダメージは攻撃力ー防御力だけど、0以下にはならない」とか、●以上●以下という制限をするときに使います。
(0以上とかばっかりでわかりにくいかも)
int attackBase = 100; // 攻撃力は100
int def = 100; // 防御力は100
// 攻撃力はベース攻撃力±ブレが2割
int atkPower = attackBase + Mathf.Round(Random.Range(-attackBase * 0.2f, attackBase * 0.2f));
int damage = Mathf.Clamp(atkPower - def, 0, 99999);
最大ダメージはいい感じにするとして、こんな感じの計算式にすると、ダメージが0未満にはならないので、防御力のほうが高いときにHPが回復といったことがなくなります。
ほかにもキャラの移動の際に、画面端を考慮した場合に、X座標がいくつからいくつまでしか移動できない等の制御にも使えますよね!
ゲームは結構●~●までの制限というのがあると思うので、使う機会は色々ありそうですね!
ってことで、今日はこれだけ!
あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】C#8でswitchが短く書けますね。 | 【ハルシオンブログ】Randomって結構いろんなのが取れますよね。 »
コメント
| h o m e |