まず
「三角関数ってなんやねん。sinf() cosf()使わなくてもいいやん!!」
って思っている人は必ず読んでください。
そもそも、sin cosをゲーム制作で利用しなければならない理由があります。
それは斜め移動時の高速化防止のためです
結論はこれです。
円を利用して全ての方向へ均一に動かすのが左
ただのXとYの足し算をしたものが右です。
明らかに右がダメなことがわかりますよね。(RTAで斜め移動使われちゃう)
それでは、その円について図解で説明します。
今回は2D座標で説明しますね。
真ん中機体が自機だとします。
横がX座標、縦がY座標。0から矢印の方向が正の方向です。
それでは、プレイヤーの移動についての式はこのようになりますね。
ここで「D3DX_PI」は、数学で言う「3.14(π)」を表します。
何故、()の中身を変えるだけで移動方向が変わるのか説明します。
まず、青がsinf、緑がcosf です。
線グラフを思い出してみてください。
D3DX_PI/0の値を入れると、Y軸には働いて、X軸には何も力が働きませんね。(縦移動)
逆に±D3DX_PI/2の値を入れると、X軸には働いて、Y軸には何も力が働きません。(横移動)
大事なのはこの円の画像です。
ではなぜこのようになるのでしょうか。
まずこの画像をみてください。※簡易自作のため"完全に正しいグラフ"ではありません。
SinカーブとCosカーブってやつです(多分聞いたことありますよね)
sinfは青,cosfは緑です。
先ほどと同様に、()の中身にD3DX_PI/0の値を入れてみましょう。
少し見えにくいですが、赤枠の値になり、Xは0、Yは±1になりますよね。
それを簡易化したのがこの円の画像です。
これでsinf(),cosf()に値を入れたら、XY軸に働く力(方向)がわかりますね。
以上「三角関数の基本」でした。
次のページ「エフェクトパーティクル」
コメント
最新を表示する
NG表示方式
NGID一覧