1. プチメタラジオ
  2. サインコサインも三平方の定理..
2025-09-06 08:55

サインコサインも三平方の定理もゲーム作りに必要

「三角関数なんて何の役に立つの?」というのは
勉強にウンザリした中高生がよく言うセリフだが、
実はめちゃくちゃに利用価値の高い理屈なので
当然、ゲーム作りにおいても大活躍している。
三平方の定理(ピタゴラスの定理)も同様だ。

https://mclover.hateblo.jp/entry/20210805/1628132400

https://mclover.hateblo.jp/entry/20210925/1632537000

サマリー

中学校で習う三平方の定理や三角関数がゲーム開発において重要な役割を果たしていることを探求しています。これらの数学的概念がどのようにキャラクターの動きや当たり判定、ターゲッティングに応用されているかを具体例を交えて説明しています。

ゲーム開発における数学の役割
さて、今回はあなたが共有してくれた、ゲーム開発に関するブログ記事について深掘りしていこうと思います。
はい。
テーマはですね、中学校で習う数学。具体的には三平方の定理とか、あと三角関数、サイン、コサイン、タンジェント。
ああ、懐かしいですね。
これが実際のゲーム作りの現場で、どう使えるのかっていう点ですね。
ええ。
記事によると、これって単に役に立つっていうレベルじゃなくて、もうゲームの基本的な動きを作る上で、なんか欠かせないものらしいんですよ。
そうなんですよね。
で、この記事の面白いのが、その複雑な数式とか、そういう細かい話は、まあ今回はちょっと置いておいて、なぜとか、どういうふうにこの中学レベルの数学が土台になってるのか、その考え方のエッセンス、これを探っていきたいなと。
ええ、いいですね。
多分、学校で習った時って、これ一体何の役に立つのかなって、まあ多くの人が感じたかもしれないですよね。
思いました、思いました。
三平方の定理の具体的な応用
その数学の公式が実は、我々が楽しんでるゲームっていうエンタメの、まさに裏側でフル活用されてるっていう。
その具体的な使われ方を見ていくっていうのはすごく面白いと思いますね。
じゃあまずは三平方の定理からいきましょうか。
直角三角形の辺の長さの関係を示す、A二乗足すB二乗はC二乗ってやつですね。
はいはい、あれですね。
記事でも使われまくっているって強調されてましたけど、一番こう基本的な使い方ってどういうものなんですか。
えっとですね、最も基本的なのは、やっぱりゲーム画面上の2点間の距離を求めることですね。
距離ですか。
キャラクターの位置って、普通X座標、横の位置とY座標、縦の位置で管理されてるじゃないですか。
はいはい。
で、例えばキャラクターAとキャラクターBがいて、この2人がどれだけ離れてるか知りたい。
そういう時に、それぞれのX座標の差とY座標の差、これを直角三角形の底辺と高さみたいに考えるわけです。
なるほど。
そうすると、三辺法の定理を伝えば、2人の間の直線距離ですね。
斜辺の長さがピタッと計算できる。
へー、画面上の距離がちゃんと計算で出せるんですね。
そうなんです。これが基本ですね。
で、その距離がわかると、今度はゲームには絶対必要な当たり判定、これにも応用できるっていう話でしたよね。
その通りです。当たり判定重要ですよね。
例えばですね、各キャラクターを単純化して円で追うみたいに考えるんです。
円ですか。
ええ。で、その円の中心同士の距離をさっきの三平方の定理で計算します。
はい。
で、その距離がそれぞれの円の半径を足したもの、半径の合計ですね。
これより短かったら、これは接触してるなと、当たってると判定するわけです。
あー、なるほど。シンプルだけどすごくわかりやすい。
これが円を使った当たり判定の基本中の基本ですね。
でも確かにこれがないとゲームにならないですもんね。
そうなんです。で、ちょっと面白いのが、ゲームによってはこの判定を見た目通りじゃなくて、ちょっと調整することがあるんですよ。
調整ですか。
ええ。例えば、敵の撃ってくる弾の当たり判定は、見た目のグラフィックよりほんの少しだけ小さくするとか。
ええ。
逆に、プレイヤーの攻撃は見た目よりちょっとだけ大きくするとか。
そうするとプレイヤーは、避けやすい、当てやすいって感じてストレスが減るんですよね。
ああ、なるほど。プレイヤーに有利なようにちょっと調整するわけですね。
そうなんです。そういうゲーム性のための調整っていうのも結構大事だったりしますね。
見た目と判定のズレもプレイヤーに有利ならあんまり文句は出にくいっていう面白い側面があります。
距離がわかると当たり判定ができると。
三角関数とターゲッティングの重要性
じゃあゲームのもう一つの大事な要素である動き。キャラクターを特定の方向に動かすみたいな。
これにはどんな数学が関わってくるんですか。
はい。ここで出てくるのが三角関数ですね。サインとコサイン。
出ましたね。サイン、コサイン。
これらを使うとキャラクターを特定の角度に、それから特定のスペードで動かしたい。
特に斜め移動ですね。これをすごく滑らかに表現できるんです。
斜め移動ですか。
そうです。例えば右斜め上30度の方向に速さ5で動かしたいみたいな時ですね。
サインとコサインを使うとその角度と移動したい距離、速さですね。
からX方向、つまり横方向にどれだけ動かせばいいか。
Y方向、縦にどれだけ動かせばいいかっていうのを正確に計算できるんです。
なるほど。じゃあこれがないと何かカクカクした動きになっちゃうとか。
まさにそうなりがちですね。特に斜め移動が不自然になったり。
あとはシューティングゲームとかで敵が前方向に弾をばら撒くみたいなのあるじゃないですか。
ありますね。端膜系の。
あれも三角関数で角度計算してそれぞれの方向に弾を飛ばしてるからああいう表現ができるわけです。
じゃああの滑らかな動きとか派手な演出の裏にはちゃんとサインコサインが働いてるってことなんですね。
そういうことです。
これもその具体的な計算方法は記事を見てもらうのが一番ですが、
大事なのは角度と移動量からXとYの成分を求めるっていうこの考え方ですね。
これがあるお陰でプログラムで本当にいろんな動きが作れるようになるんです。
わかりました。サインとコサインは移動の方向と量を決めると。
じゃあ残りのタンジェント、これはどういう役割なんですか?
動かす方向はわかったけど、そもそもどっちを向けばいいのかみたいな問題もありそうですけど。
あ、鋭いですね。まさにタンジェントはその角度自体を求めるのに主に使われるんです。
角度を求める?
例えば敵のキャラクターがプレイヤーのキャラクターの方をグッと向くとか。
ありますね。
あとは誘導ミサイルが目標に向かって飛んでいくみたいな処理ですね。
こういう時に2つのキャラクターの位置の差、つまりX座標の差とY座標の差からまずタンジェントの値を計算するんです。
で、そこからアークタンジェントっていうタンジェントの逆の関数ですね。
これを使って目標が具体的に何度の方向にあるのか、その角度を割り出すことができるんです。
へー、それで向きがわかるんですね。
そうです。で、向きがわかったらさっきのサイン、コサインを使ってその角度にキャラクターを移動させたり、その方向に弾を発射したりするという流れですね。
いやー、こうして伺うと本当にゲームの基本的なアクション、動きとか当たり判定とか、そういうものの多くが中学校で習った数学がベースになってるんですね。
ちょっと驚きです。
ええ、そうなんですよ。
なんかもっと難しい高度な数学が必要なんだろうなって思われがちですけど、実はその根幹を支えてるのって意外とこういう基本的な知識だったりするんですよね。
記事の筆者の方も書いてましたけど、優秀な数学者が見つけてくれたこういう便利な公式を我々は必要になった時に理解して使わせてもらう方が自分でゼロから考え出すよりずっと効率的じゃないですか。
まあ確かにそうですね。
だから大事なのは多分数学への苦手意識とかそういうのを一旦ちょっと欲に置いといて、必要になった時にこれ使えるかもって学んでみる、そういう姿勢なのかなって思いますね。
なるほど。今回はゲーム開発の裏側で中学レベルの数学がいかに重要なのか、そのエッセンスをちょっと見てきました。
三平方の定理が距離の計算とか当たり判定に使われて、三角関数がキャラクターの移動とか、あれは狙いを定めるターゲッティングとかに使われている、なんか具体的なイメージがつかめた気がします。
そうですね。一見すごく複雑に見えるゲームの世界も、こうやって分解していくと意外と基本的な原理とかルールの組み合わせで成り立っているっていうことが結構多いんですよね。
ええ。
今回取り上げた数学なんかはまさにその良い例かなと。非常にエレガントな応用だと思いますね。
本当ですね。では最後にこれを聞いているあなた自身でちょっと考えてみてほしい問いかけをさせてください。
はい。
今回の数学みたいに学校で習ったときには正直あんまりピンとこなかったんだけど、実は社会のいろんな場面ですごく応用されている知識って他にもたくさんあるんじゃないでしょうか。
あなた自身の経験とか知識の中に眠っているそういう隠れたつながりみたいなものをちょっと探してみると何か新しい発見があるかもしれません。
08:55

コメント

スクロール