プレイヤーによるオブジェクトの移動 - GetAxisRaw入力によるオブジェクトの移動 - Unity

カーソルキーを利用してオブジェクトを移動させるコードを紹介します。
Unity 2018を利用した手順はこちらの記事を参照してください。

オブジェクトの画像作成

異動対象のオブジェクトを作成します。
オブジェクトはスプライト画像で表現します。今回は下図の円を作成しました。背景は(レイヤーを非表示にし)透明色にしています。作成した画像をPNG形式で保存します。

オブジェクトの作成

Unityを起動し、プロジェクトを作成します。プロジェクトは"2D"にします。下図のウィンドウが表示されます。

スプライト画像のインポート

ウィンドウ下部のプロジェクトウィンドウで"Assets"フォルダを選択し、右クリックします。ポップアップメニューが表示されるので、[Create]メニューの[Folder]メニューを選択します。


フォルダが作成されます。名称を"Sprites"とします。(好きな名前で構いません)


フォルダが作成できました。


先ほど作成した画像を保存したフォルダを開きます。


エクスプローラで作成したPNG画像をUnityのプロジェクトウィンドウのSpritesフォルダへドラッグ&ドロップします。


または、プロジェクトウィンドウでインポートしたいフォルダをクリックして選択後、右クリックしポップアップメニューを表示し[Import New Asset ...]メニューをクリックします。ファイル選択ダイアログが開くので、作成したPNG画像を選択します。


画像がインポートされました。


インポートされた画像をクリックします。右側にプロパティウィンドウが表示されます。プロパティウィンドウの一番上[Texture Type]が"Sprite (2D/uGUI)"であることを確認します。

オブジェクトの作成

プロジェクトウィンドウの画像(スプライト)を[Scene]ウィンドウにドラッグ&ドロップします。ドロップできるとシーンにオブジェクトが追加されます。(下図)

Rigidbody2D のアタッチ・設定

オブジェクトにRigidbody2Dをアタッチします。Rigidbody2Dをアタッチすると物理エンジンの影響を受けるようになります。

先に作成したオブジェクトをクリックして選択します。右側のInspectorウィンドウの下部の[Add Component]ボタンをクリックします。プルダウンメニューが表示されます。メニューの[Physics 2D]をクリックします。


[Physics 2D]カテゴリのメニューが表示されます。一番上の"Rigidbody 2D"をクリックします。


Inspectorウィンドウに"Rigidbody 2D"が追加されました。


Inspectorウィンドウの"Rigidbody 2D"セクションの"Gravity Scale"を"0"に変更します。重力の効果を無視するためです。

スクリプトの記述

オブジェクトを移動させるためのスクリプトを記述します。

プロジェクトウィンドウの[Assets]を選択し右クリックします。ポップアップメニューの[Create]メニューの[Folder]メニューを選択します。


Scriptsディレクトリを作成します。(名前は任意のもので構いません)


続いて"Scripts"ディレクトリ内にスクリプトを作成します。"Scripts"ディレクトリを選択し右クリックしポップアップメニューを表示します。[Create]メニューの[C# Script]メニューをクリックします。


スクリプトファイルが作成されます。スクリプトのファイル名を"Player"とします。(名称は任意で構いません。)


Projectウィンドウに作成されたスクリプトファイルをダブルクリックします。下図のスプラッシュスクリーンが表示され、MonoDevelopが起動します。


MonoDevelopのウィンドウが表示されコードが表示されます。コードを記述します。

コード

下記のコードを記述します。
using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	public float speed = 5;
	
	// Update is called once per frame
	void Update () {
		float x = Input.GetAxisRaw ("Horizontal");
		float y = Input.GetAxisRaw ("Vertical");
		Vector2 direction = new Vector2 (x, y).normalized;
		rigidbody2D.velocity = direction * speed;
	}
}

コードが記述できたら[ファイル]メニューの[Save]メニューをクリックし保存します。

スクリプトのアタッチ

MonoDevelopを閉じUnityに戻ります。Projectウィンドウで先ほど作成した"Player"スクリプトを配置した青い円形のオブジェクトにドラッグ&ドロップします。正しく処理ができると右側のInspectorウィンドウに"Player (Script)"の項目が追加されスクリプトがアタッチできたことが確認できます。

カメラの設定

Sceneウィンドウの中央にあるカメラオブジェクトをクリックして選択します。右側のInspectorウィンドウの"Projection"の値が"Orthographic"になっていることを確認します。Orthographicは「オルソ投影」のことでレンズのひずみ等を全く無視して平面上に投影する方法です。2Dの場合はこの投影法が基本になります。

テスト実行

以上で設定は完了です。ウィンドウ上部の三角形の再生ボタンをクリックしてテスト実行します。

下図の画面に切り替わります。カーソルキーを押下すると青い円が上下左右に動くことが確認できます。



以上でプレイヤーによるオブジェクトの移動ができました。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-09-02
作成日: 2014-08-28
iPentec all rights reserverd.