Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity8】アイテムで体力回復!Layer Collision Matrix, RectTransformのsizeDelta【横スクロールユニティちゃん10】

Unity5.1.0f3 Personal(2015年6月)

f:id:hiyotama:20150618122504p:plain


このコンテンツは、『ユニティちゃんライセンス』で提供されています

ユニティちゃんライセンス

前回の続きです〜


今回はアイテムを取った時に体力を回復するようにします〜すぐ終わります〜

【目標】アイテムを取得して体力回復する

①回復アイテムアニメーションを作る
まずは回復アイテムのアニメーションを作っていきます〜敵キャラの爆発の時に利用したbombスプライトのbomb_40、bomb_41をまとめてドラッグし、Hierarchyビューにドロップして下さい〜

できたオブジェクトの名前はItemにします〜


f:id:hiyotama:20150617194557p:plain
ドラッグ&ドロップ!


②回復アイテムの衝突判定
できたオブジェクトにRigidbody 2DとCircle Collider 2Dコンポーネントを付け、以下のように設定して下さい〜


f:id:hiyotama:20150617194749p:plain

Rigidbody 2DのFreeze Rotation Zにチェックを入れ回転しないようにして、Circle Collider 2DのRadiusを0.8にし、適切な衝突範囲にします〜


また、Enemyとぶつかった時に衝突判定が有効だと困るので、前回やったレイヤーの設定にてItemレイヤーを作成してItemオブジェクトに設定して下さい〜


f:id:hiyotama:20150617195056p:plain


次にLayer Collision Matrixにて、Itemレイヤーとの衝突判定の設定をしていきます〜
Player、PlayerDamage、Ground以外のチェックを外して下さい〜


f:id:hiyotama:20150617195346p:plain


③回復処理の実装
それでは回復処理を実装していきましょう〜LifeScriptに加筆していきます〜

using UnityEngine;
using System.Collections;

public class LifeScript : MonoBehaviour {
	
	RectTransform rt;
	
	void Start ()
	{
		rt = GetComponent<RectTransform>();
	}
	
	public void LifeDown (int ap)
	{
		rt.sizeDelta -= new Vector2 (0,ap);
	}
//********** 開始 **********//
	public void LifeUp (int hp)
	{
		//RectTransformのサイズを取得し、プラスする
		rt.sizeDelta += new Vector2 (0,hp);
		//最大値を超えたら、最大値で上書きする
		if (rt.sizeDelta.y > 240f) {
			rt.sizeDelta = new Vector2 (51f, 240f);
		}
	}
//********** 終了 **********//
}

LifeScript.cs


LifeUpメソッドを追加しました〜メソッド内では、引数hp(HealPoint)分だけ体力ゲージのHeightをプラスし、回復を表現しています〜


最大値を240とし、240を超えた時はWidth: 51, Height: 240で上書きし、最大値を超えないようにしています〜


続いてItemScriptを新規作成し、Itemオブジェクトに取り付けて下さい〜以下ソースです〜

using UnityEngine;
using System.Collections;

public class ItemScript : MonoBehaviour {
	
	public int healPoint = 20;
	public LifeScript lifeScript;
	
	void OnCollisionEnter2D (Collision2D col)
	{
		//ユニティちゃんと衝突した時
		if (col.gameObject.tag == "UnityChan") {
			//LifeUpメソッドを呼び出す 引数はhealPoint
			lifeScript.LifeUp(healPoint);
			//アイテムを削除する
			Destroy(gameObject);
		}
	}
}

ItemScript.cs


public変数のlifeScriptがありますので、LifeScriptを持つHpオブジェクトをInspectorビューから指定してあげます〜


f:id:hiyotama:20150617200612p:plain
ドラッグ&ドロップ!


Playerであるユニティちゃんと衝突した時、LifeUpメソッドを呼び出し、アイテム自体はDestroyにて削除しています〜
引数のhealPointはデフォルトでは20になっていますが、public変数なのでInspectorビューから変更できます〜


【結果】


f:id:hiyotama:20150617201210p:plain
Enemyとぶつかると


f:id:hiyotama:20150617201257p:plain
体力が減る


f:id:hiyotama:20150617201328p:plain
アイテムをとって回復


ちゃんと回復してくれました〜


今回はここまでです〜

ありがとうございました〜


【Unity開発8】ユニティちゃんを表示させる【横スクロールユニティちゃん1】

【Unity開発8】ユニティちゃんを歩かせる【横スクロールユニティちゃん2】

【Unity開発8】カメラにユニティちゃんを追いかけさせる【横スクロールユニティちゃん3】

【Unity開発8】ユニティちゃんをジャンプさせる【横スクロールユニティちゃん4】

【Unity開発8】ユニティちゃんバスターで攻撃する【ユニティちゃん横スクロール5】

【Unity開発8】走っている時やジャンプ中にも弾を撃つ【横スクロールユニティちゃん6】

【Unity開発8】弾を当てて敵を倒す【横スクロールユニティちゃん7】

【Unity開発8】uGUIでライフを作り、ダメージを実装する【横スクロールユニティちゃん8】

【Unity開発8】ダメージを食らった時、一定時間無敵状態にする【横スクロールユニティちゃん9】

【Unity開発8】アイテムを取得して体力回復する【横スクロールユニティちゃん10】

【Unity開発8】敵キャラを倒した時にアイテムを落とさせる【横スクロールユニティちゃん11】

【Unity開発8】Main Cameraに映るまで敵キャラを待機させておく【横スクロールユニティちゃん12】

【Unity開発8】タイトル・ステージ紹介・ゲームオーバー・ゲームクリアー画面を作る【横スクロールユニティちゃん13】

【Unity開発8】バーチャルパッドを付けてモバイル対応する【横スクロールユニティちゃん14】