読者です 読者をやめる 読者になる 読者になる

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

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

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

いつもひよこのたまごをご利用下さいましてありがとうございます!
おかげ様でチュートリアル数も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】