コガネブログ

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

【Unity 入門】全方位シューティングを作る 第3回 プレイヤーの移動

目次

前回のチュートリアル

はじめに

前回は、プレイヤーと背景をシーンに配置しました
今回は、プレイヤーを WASD キーや矢印キーで操作できるようにしていきます

プレイヤーを制御するスクリプトの作成

まず、プレイヤーを制御するスクリプトを作成していきます

Project の欄の「+」を押して

「Folder」を選択し、

作成したフォルダに「Scripts」と名前を付けます

さらに、作成した「Scripts」フォルダを右クリックして
「Create>C# Script」を選択し、

作成したスクリプトに「Player」と名前を付けます

これで、プレイヤーを制御するスクリプトの作成が完了しました

プレイヤーを制御するコードの記述

さきほど作成した「Player」をダブルクリックします

すると、お使いの環境に合わせて Visual Studio や MonoDevelop などの、
プログラムを書くためのエディタが起動するので、
下記のコードを記述していきます

using UnityEngine;

// プレイヤーを制御するコンポーネント
public class Player : MonoBehaviour
{
    public float m_speed; // 移動の速さ

    // 毎フレーム呼び出される関数
    private void Update()
    {
        // ゲームを 60 FPS 固定にする
        Application.targetFrameRate = 60;
        
        // 矢印キーの入力情報を取得する
        var h = Input.GetAxis( "Horizontal" );
        var v = Input.GetAxis( "Vertical" );

        // 矢印キーが押されている方向にプレイヤーを移動する
        var velocity = new Vector3( h, v ) * m_speed;
        transform.localPosition += velocity;
    }
}

コードの記述が完了したら、Ctrl + S を押すなどして、スクリプトを保存し、
Unity エディタに戻ります

プレイヤーを制御するスクリプトの反映

スクリプトは、ゲームオブジェクトにアタッチすることで動作するようになります

作成した「Player」スクリプトを、「Player」オブジェクトにドラッグします

そして、「Player」オブジェクトを選択すると、
「Player」スクリプトがアタッチされていることがわかります

アタッチされている「Player」スクリプトを見ると、「Speed」と表示されています
これは、先ほど記述したコードの「m_speed」変数です

スクリプト内の public 変数は、このように、Untiy エディタ上で編集できるようになり、
コードを編集しなくても、Unity エディタ上でパラメータを調整できるようになります

今回は、「Speed」に「0.1」と入力します

動作確認

これで、プレイヤーを制御するスクリプトの作成と反映が完了したので、

Unity エディタ上部の再生ボタンを押して、ゲームを実行してみます

そして、WASD キーもしくは矢印キーを押すと、
プレイヤーを操作できることが確認できます

動作確認が終わったら、Unity エディタ上部の再生ボタンを押して、ゲームを停止します
今後も、ゲームの動作確認が終わったら、必ずゲームを停止するようにしましょう
もし、ゲームを再生したまま作業を続けてしまうと、
作業内容が正常に保存されないことがあるためです

作業内容の保存

Ctrl + S を押して、ここまでの作業内容を保存しておきます
今後も、ある程度作業が進んだら、作業内容を保存しておきましょう
もし、作業内容を保存せずに作業を続けてしまうと、
Unity エディタや PC が万が一フリーズした時に、作業内容が消えてしまうためです

次回は、プレイヤーが画面外に出ないように移動範囲を制限していきます

補足:プレイヤーの移動速度について

もしもプレイヤーの移動速度が速くて操作が難しい場合は
「Player」スクリプトの「Speed」の数値を調整してください

次のチュートリアル

チュートリアル一覧