Unity プレイヤーを移動 ジャンプさせるスクリプト|Part1

シェアする

Unityでアクションゲームを作る場合、基本的にステージに合わせてプレイヤーを移動させますよね。

プレイヤーの移動やジャンプをさせるコードは簡単に実装することができるので、コードの説明を合わせて紹介します。

はじめに

プレイヤーを移動させるためには「移動用のスクリプト」「移動中のアニメーション」「画像」などが必要になるのですが、今回はアニメーションと画像の作成方法は省略します。

アニメーションを一緒に実装したい場合は各自で用意してください。また、画像もなんでも良いので、動かせるものを用意しておきましょう。

では早速今回使うコードを紹介していきます。

コードを書いてみよう

プレイヤーを移動させたり、ジャンプさせたりするコードはとても簡単です。以下のようなスクリプトを新規作成してください。

using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour {

	GameObject Player;
	int horizon;
	int vertical;
	// Use this for initialization
	void Start () {
		Player = GameObject.Find ("Player");
	}
	
	// Update is called once per frame
	void Update () {
	
		if (Input.GetKey (KeyCode.RightArrow)) {
			horizon = 10;
			Player.GetComponent<RigidBody2D> ().velocity = new Vector3(horizon, Player.GetComponent<RigidBody2D>().velocity.y, 0);
		} else if (Input.GetKey (KeyCode.LeftArrow)) {
			horizon = 10;
			Player.GetComponent<RigidBody2D> ().velocity = new Vector3(-horizon, Player.GetComponent<RigidBody2D>().velocity.y, 0);
		}
		if (Input.GetButtonDown ("Jump")) {
			vertical = 100;
			Player.GetComponent<RigidBody2D> ().velocity = new Vector3 (Player.GetComponent<RigidBody2D> ().velocity.x, vertical, 0);
		}
	}
}

ではこのスクリプトで使っているコードを1つずつ説明していきます。

まず前提として、動かすオブジェクトが「Player」横移動の速さが「horizon」ジャンプの高さが「vertical」に設定してあります。

Start( ) {}

-> プレイヤーのGameObjectを取得しています。(“XXX”)内は自由ですが、後で作成するプレイヤーのオブジェクトと同じ名前にしてください。

Input.GetKey

-> キーボードの○○を入力したら〜する。という処理を実行させます。

Input.GetKey(KeyCode.RightArrow)にした場合は「→」を押した時、Input.GetKey(KeyCode.LeftArrow)の場合は「←」を押した時となっています。

他にもInput.GetButton(“XXX”)などもあるので、キーボードに合わせて取得できます。

horizon = 10;

-> キーボードの「→」が入力されたら「horizon」の値を10にします。

GetComponent<RigidBody2D>().velocity

-> プレイヤーの移動処理をしています。

velocity = new Vector3(xにかける値, yにかける値, zにかける値)をそれぞれ設定しましょう。

横移動はx軸を変更すれば良いので、xに「horizon」を指定しています。

yにPlayer.GetComponent<RigidBody2D>().velocity.yにしているのは、詳しくは後述するのですが0にしてしまうとジャンプ中に挙動が変わってしまいます。

Input.GetButtonDown(“Jump”)

-> スペースキーを押した時に処理を実行します。

先ほどInput.GetKeyでも説明したように○○を押した時に○○を実行するというものなのですが、「Down」をつけることによって「○○を押した時だけ」実行します。

Downが無い場合は、押し続けている間呼び続けます。

velocity

-> スペースキーを押したらジャンプさせるようになっています。ジャンプは縦の移動なのでyにvelocityを指定してください。

こちらの「GetComponent<RigidBody2D>().velocity.x」についても後述します。

このようなコードを書くだけで簡単にプレイヤーを動かすことができますが、このコードで説明しているvelocityで注意する点があります。

長くなってしまったのでvelocityを使う上での注意点と、ゲームオブジェクトの配置やスクリプトのアタッチなどはPart2へ続きます。

Part2へ続く >>

%d人のブロガーが「いいね」をつけました。