代官山らへんで働くengineerのUnityブログ

サーバサイドやってきたエンジニアがUnityとか触って遊ぶだけのブログ

【Unity2D】角度と距離からベクトルを作ってAddForceする【Vector2】

AddForceは引数にベクトルを渡し、そのベクトルにしたがってObjectに力を加えるメソッドですが
ベクトルってなんぞ...って人ももしかしたらいるのかなーと思うので角度と距離からベクトル(Vector2)を作ってAddForceする方法のご紹介です

float angle = 70; //角度70度 基準は↑
float distance = 1500 //距離1500

float rad = angle * Mathf.Deg2Rad; //角度をラジアン角に変換

//rad(ラジアン角)から発射用ベクトルを作成
double addforceX = Math.Sin((rad) * distance;
double addforceY = Math.Cos((rad) * distance;
Vector2 shotVector = new Vector2((float)addforceX, (float)addforceY);

//Rigidbody2Dを取得してから
Rigidbody2D rigidbody2d = transform.GetComponent<Rigidbody2D> ();
//発射ァ!!
rigidbody2d.AddForce(shotVector);


これにRigidbody2Dまわりの摩擦係数やら空気抵抗やらを調整してやると
モンスト風gif
なんとか〜ストライクみたいのができました
アァ!バックベアード様!