見出し画像

ゲームを作るための必須知識!#02

こんにちは、この記事ではゲームを作ってみたい・興味がある中学・高校生をメインにしっかりと勉強しておいたほうがいい教科や内容を記載しております。
私は現在ゲームを作り始めて半年ではありますが、
中学・高校ともっと勉強しておけばよかったと思う箇所がいくつもあります。
そうならないためにここに書き残していきます!
是非、参考になればいいなと思います!
また、まだまだ私は初心者なのでゲームプログラマーの方も是非見ていただき「これ大事だなぁ」「これも大事だよ」と思うことがありましたら
いいねやコメントを残していただけるとより参考になると思います。

第2弾目も
前回に引き続き
        「物理」
             です。
ですが、今回は
       「数学」の内容も
                使っていきます!
第2弾では
「1つ目の物体から2つ目の物体に向けての角度や距離を求める」
について話を進めていきます。
初めに、3Dのゲームの世界では、物理の世界のように2Dではないので
それぞれのx軸とz軸をまとめて一つのx軸にしないといけないのです...
ので、1つ目の物体の位置をorigin、2つ目の物体の位置をgoalとして
2点間の距離の式を立てると.....

(originやgoalの後ろのピリオドはどの軸かをあらわします)

上記のようになります!
y軸は....

上記のように負の値にならないように計算すればいい!
これで座標が2つになり物理の面で考えやすくなります!

まず、距離から求めましょう!
とはいっても上記でだいたい求めてはいるので、
あとは1つ目と2つ目の間の3点の距離を求めます。
この計算は2点の距離にy軸の計算を入れてあげることで求めることができます。
ここでは3点の距離は分かりやすいように「z」としておくと....

これで距離を求めることができました!

次は角度を計算していきましょう!
角度を計算する方法はいろいろとありますが、
一番使いやすいのが
          三角関数です!
なのでsinやcos、tanなどの知識を知っておかなければなりません!!
では本題に入りましょう。
1つ目の物体から正確になげるには角度を2つ求めないとなりません!

 ・1つ目の物体から見たときの2つ目の物体の位置の角度(x軸の回転)
 ・1つ目の物体の正面から傾いている角度(y軸の回転)

まず、x軸の回転について考えてみましょう!

x軸を求めたい場合は先程求めた、距離を使って求めてみましょう!
上記のようにcosθを出すため  x / z を計算します。
そのあと、cos90度未満のもので近い値のものを探します。
その値の角度が求めたい赤部分の角度となります!

例えば、 x / z  =  1.54235 / 2 だったとすると
 cos30°=√3 / 2 (≒1.7320… / 2) と cos45°=√2 / 2 (≒1.4142… / 2) 
   の間にあるので約40°と分かります
 

次にy軸の回転を求めましょう!
originのz軸をgoalのz軸に合わせた点をorigin’とし、
goalのy軸をoriginのy軸に合わせた点をgoal’とします。
またorigin’とoriginの間をdとし求めるとすると、
d=origin.z-origin.z
となります。

図のピンクで囲まれた部分のoriginの角がy軸の回転角となります。
この角を求めるには 
                              cosθ= d / x 
              で求めることができます。
先程のように角を求めることで y軸の回転角を求めることができます。

以上が
「1つ目の物体から2つ目の物体に向けての角度や距離を求める」
の考え方と計算です。
これを使い投げるときには初速度が必要になります!
また、斜方投射になるのでその計算も使わなければなりません。
そこからが複雑となり私も今頑張っているところです....

前回も含めてゲームを作成する際は
物理や数学などに少し触れる機会があります。
少し頭を抱えてしまうかもしれませんが、そこを乗り越えて、
プレイヤーやオブジェクトが動いた時は達成感を味わえます!
なので、物理や数学が嫌いという方は少しでも触れて見ては
   いかがでしょうか?

第3弾もお楽しみに!!