【Unity8】アイテムで体力回復!Layer Collision Matrix, RectTransformのsizeDelta【横スクロールユニティちゃん10】
Unity5.1.0f3 Personal(2015年6月)
このコンテンツは、『ユニティちゃんライセンス』で提供されています
前回の続きです〜
今回はアイテムを取った時に体力を回復するようにします〜すぐ終わります〜
【目標】アイテムを取得して体力回復する
①回復アイテムアニメーションを作る
まずは回復アイテムのアニメーションを作っていきます〜敵キャラの爆発の時に利用したbombスプライトのbomb_40、bomb_41をまとめてドラッグし、Hierarchyビューにドロップして下さい〜
できたオブジェクトの名前はItemにします〜
ドラッグ&ドロップ!
②回復アイテムの衝突判定
できたオブジェクトにRigidbody 2DとCircle Collider 2Dコンポーネントを付け、以下のように設定して下さい〜
Rigidbody 2DのFreeze Rotation Zにチェックを入れ回転しないようにして、Circle Collider 2DのRadiusを0.8にし、適切な衝突範囲にします〜
また、Enemyとぶつかった時に衝突判定が有効だと困るので、前回やったレイヤーの設定にてItemレイヤーを作成してItemオブジェクトに設定して下さい〜
次にLayer Collision Matrixにて、Itemレイヤーとの衝突判定の設定をしていきます〜
Player、PlayerDamage、Ground以外のチェックを外して下さい〜
③回復処理の実装
それでは回復処理を実装していきましょう〜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ビューから指定してあげます〜
ドラッグ&ドロップ!
Playerであるユニティちゃんと衝突した時、LifeUpメソッドを呼び出し、アイテム自体はDestroyにて削除しています〜
引数のhealPointはデフォルトでは20になっていますが、public変数なのでInspectorビューから変更できます〜
【結果】
Enemyとぶつかると
体力が減る
アイテムをとって回復
ちゃんと回復してくれました〜
今回はここまでです〜
ありがとうございました〜
【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】