コガネブログ

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

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

目次

前回のチュートリアル

はじめに

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

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

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

f:id:baba_s:20180331100940p:plain

Project の欄の「Create>Folder」を選択し、

f:id:baba_s:20180331101024p:plain

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

f:id:baba_s:20180331101122p:plain

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

f:id:baba_s:20180331101151p:plain

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

f:id:baba_s:20180331101217p:plain

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

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

f:id:baba_s:20180331101217p:plain

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

f:id:baba_s:20180331101354p:plain

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

using UnityEngine;

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

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

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

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

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

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

f:id:baba_s:20180331101622p:plain

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

f:id:baba_s:20180331101746p:plain

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

f:id:baba_s:20180331101845p:plain

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

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

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

動作確認

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

f:id:baba_s:20180331102139p:plain

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

f:id:baba_s:20180331102320g:plain

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

f:id:baba_s:20180331102433p:plain

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

作業内容の保存

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

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

次のチュートリアル

チュートリアル一覧