ナイル川キリン【フリーダムなブログ】

ゲーム広告用に配信、ブログ等をしてます。 日記、ゲーム進捗報告、勉強報告がメインです👍️

ゲームの為の三角関数

眠い!ので先に書いときます

 

ミニゲーム三角関数使うので

改めて勉強しました。

 

 

 

ゲーム開発の為に

覚えておきたい三角関数


参考サイト

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

 

https://daeudaeu.com/c-atan/


https://daeudaeu.com/programming-sankaku/

 

●メモ
三角関数とは

「直角三角形の角度から辺の長さの比率を返す関数」

斜めに移動する(x軸とy軸に値がある)

時斜めに約1.4倍になる

(直角三角形は斜辺最強>高さ、底辺)


f:id:kirinLike:20230628164507j:image

 


f:id:kirinLike:20230628164532j:image

真面目にメモ書こうと思ったけど僕のメモより

参考サイト見た方が生産的だと思ったので

途中で適当になりました笑

 

メモ

ラジアンから角度への変換
 角度 = ラジアン × (180 ÷ 円周率 )
角度からラジアンに変換
 ラジアン = 角度 × ( 円周率 ÷ 180)

 

Mathf.Deg2Rad(角度×この子=ラジアン)

float cos=Mathf.Cos(30×Mathf.Deg2Rad)

こんな感じ

 

Mathf.Rad2Deg(ラジアン×この子=角度)

下のサンプルで使ってます


●「deg」は角度(degrees)

●「rad」はラジアン(radians)

 

 

TopView2dGame

script例
プレイヤーの角度

public float angleZ = -90.0f;
 
void Update()
{
      axisH = Input.GetAxisRaw("Horizontal");
      axisV = Input.GetAxisRaw("Vertical");
        Vector2 fromPos = transform.position;
        Vector2 movePos = new Vector2(fromPos.x + axisH , fromPos.y + axisV);
        angleZ = GetAngle(fromPos , movePos);
}
    float GetAngle(Vector2 p1, Vector2 p2)
    {
        float angle;
        if(axisH != 0 || axisV != 0)
        {
            float dx = p2.x - p1.x;
            float dy = p2.y - p1.y;
            //角度(ラジアン)を求める
            float rad = Mathf.Atan2(dy, dx);
            //ラジアンを度に変換して返す
            angle = rad * Mathf.Rad2Deg;
        }
        else
        {
            angle = angleZ;
        }
        return Mathf.Round(angle);
    }

if(angle)//角度 -180~0~+180   ( -90=-1y)(+1y=90
{
   animationとか特定の処理
}

参考にする人が万が一いるとあれなのでちゃんとした奴書いときます。

(上のscript修正済み)

 

てかこんな感じでエディッターからコピペすると出来るんかい!w


tan 関数 角度から直線の傾きを求める
atan 関数は「直線の傾き」から角度を求める
atan2 関数は「座標」から角度を求める

 

 

めっちゃ雑!!!

ごめんなさい!笑

 

●どうやらゲームを作るのに必要らしいもの

三角関数→今回必要だと感じた。

線形代数

微分積分

初等力学?

 

なんか必要って記事で見たから

移動中とかちょっとずつ勉強していきます。

必要になりそうなタイミングが来たら

がっつりやります!

 

ではでは次回!