コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity 入門】全方位シューティングを作る 第5回 プレイヤーをマウスカーソルの方に向ける

目次

前回のチュートリアル

はじめに

前回は、プレイヤーが画面外に出ないように移動範囲を制限しました
今回は、プレイヤーがマウスカーソルの方を向くようにしていきます

プレイヤーをマウスカーソルの方に向ける

このチュートリアルで作成するゲームは全方位シューティングであり、
プレイヤーは、マウスカーソルが存在する方向に弾を発射します

今回は、まず、プレイヤーがマウスカーソルの方を向くようにしていきます

「Utils」スクリプトをコードエディタで開き、
Utils クラスの末尾に下記のコードを記述します

// 指定された 2 つの位置から角度を求めて返す
public static float GetAngle( Vector2 from, Vector2 to )
{
    var dx = to.x - from.x;
    var dy = to.y - from.y;
    var rad = Mathf.Atan2( dy, dx );
    return rad * Mathf.Rad2Deg;
}

そして、「Player」スクリプトをコードエディタで開き、
Update 関数の末尾に下記のコードを記述します

// プレイヤーのスクリーン座標を計算する
var screenPos = Camera.main.WorldToScreenPoint( transform.position );

// プレイヤーから見たマウスカーソルの方向を計算する
var direction = Input.mousePosition - screenPos;

// マウスカーソルが存在する方向の角度を取得する
var angle = Utils.GetAngle( Vector3.zero, direction );

// プレイヤーがマウスカーソルの方向を見るようにする
var angles = transform.localEulerAngles;
angles.z = angle - 90;
transform.localEulerAngles = angles;

f:id:baba_s:20180331104738g:plain

これで Unity を再生すると、
プレイヤーがマウスカーソルの方を向くようになったことが確認できます

次回は、ゲームの見栄えを少し良くするため、背景がスクロールするようにしていきます

次のチュートリアル

チュートリアル一覧