c#
1Utils.cs 2 // 指定された 2 つの位置から角度を求めて返す 3 public static float GetAngle(Vector2 from, Vector2 to) 4 { 5 var dx = to.x - from.x; 6 var dy = to.y - from.y; 7 var rad = Mathf.Atan2(dy, dx); 8 return rad * Mathf.Rad2Deg; 9 } 10
c#
1player.cs 2 //移動処理 3 float dy = Input.GetAxis("Vertical") * Playerspped; 4 float dx = Input.GetAxis("Horizontal") * Playerspped; 5 6 rb2d.velocity = new Vector2(dx, dy); 7 8 // マウスカーソルが存在する方向の角度を取得する 9 var angle = Utils.GetAngle(Vector3.zero, direction); 10 11 // プレイヤーがマウスカーソルの方向を見るようにする 12 var angles = transform.localEulerAngles; 13 angles.z = angle - 90; 14 transform.localEulerAngles = angles; 15 //弾を撃つ関数 16 private void ShootNWay(float angleBase, float angleRange, float speed, int count) 17 { 18 var pos = transform.localPosition; // プレイヤーの位置 19 var rot = transform.localRotation; // プレイヤーの向き 20 21 if (count == 1) 22 { 23 // 発射する弾を生成する 24 var shot = Instantiate(BulletPrefab, pos, rot); 25 26 // 弾を発射する方向と速さを設定する 27 shot.Init(angleBase, speed); 28 } 29 } 30
このようなスクリプトから、マウスカーソルの取得からキー入力に変更して、角度を取得したいと思いました。
移動する際に、このような移動処理の場合で角度を求めることが出来るのでしょうか・・・?
他によい方法がございましたらご教授していただけるとうれしいです。
(2Dのため、どのようにして進行方向に対して角度を求めればよいのかわかりません。。)
しようと思っていたこと
キー入力にて、進行方向に対しての角度を求め、その方向に対してオブジェクトを生成する。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。