おっさんプログラマのUnity奮闘記

元WEB系プログラマのUnity奮闘記

おっさんのUnity入門 2Dオブジェクトを動かす(プレイヤー操作)

f:id:gomunpass:20180216202848j:plain

スクウェアオブジェクトをPCのキーボードで動くしくみを実装してみます。

【用意するオブジェクト】
  • PLAYER_GREEN
  • Ground
【実現したい動作】
  • PCの左右矢印キーを使って左右の移動が出来るようにする
  • スペースキーをタイプするとジャンプするようにする
  • 空中で連続ジャンプしないように地面接触判定を加える
【PLAYERを動かすスクリプト
/* PlayerMoveScript */

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMoveScript: MonoBehaviour {

	public Rigidbody2D rb2d;
	public bool isGrounded;

	void Start () {
		// オブジェクトのRigidbody2Dを取得
		rb2d = GetComponent<Rigidbody2D> ();
	}

	void FixedUpdate () {
		// 左右のキー入力を取得
		float moveparam = Input.GetAxis ("Horizontal");
		// 左右方向移動のためオブジェクトに力を加える
		rb2d.AddForce (Vector2.right * moveparam * 10f);

		// スペースキー入力でオブジェクトをジャンプさせる
		if (Input.GetKeyDown (KeyCode.Space)) {
			if (isGrounded == true) {
				rb2d.AddForce (new Vector2 (0, 9.8f), ForceMode2D.Impulse);
				isGrounded = false;
			}
		}
	}

	// 空中での連続ジャンプを抑制するため地面との接触を感知するフラグの操作
	// 地面とするオブジェクトにタグ(ground)をInspector上から追加しておく
	void OnCollisionEnter2D (Collision2D collision) {
		if (collision.gameObject.tag == "ground") {
			isGrounded = true;
		}
	}
}
【PLAYERの設定】

f:id:gomunpass:20180216203749j:plain
Box Collider 2DとRigidbody 2Dを追加して物理動作できるようにする。

【地面の設定】

f:id:gomunpass:20180216203810j:plain
Box Collider 2Dを追加して地面をすり抜けないようにする。

【動作イメージ(移動しながらジャンプ)】

f:id:gomunpass:20180216203824j:plain


次回は敵オブジェクトを追加して死亡動作などを追加してみます。


この記事のもっと詳しい内容を知りたい方はこちらのページををご覧ください。
【Unity 始め方 入門】サンプルコード付き 2Dオブジェクトを動かす(プレイヤー操作:Input.GetAxis)解説yokubari.online




独自ブログ始めました
よくばりオンラインyokubari.online