持ち物を管理するスクリプト

 拾ったアイテムをプレイヤーの持ち物として管理するスクリプトを
作成しましょう。新規スクリプトを追加し、「Player_Inventory」と名付けます。

アイテムを定義

 次のようにenum型(列挙型)でアイテムを定義してください。

					//ゲーム中のアイテム一覧---------------------------------

					enum InventoryItem{
					DEBUG_ITEM,	//実際のアイテムに干渉しない
					BOOK,	//本
					REPAIR,	//回復アイテム
					COUNT_NUM_ITEMS	//アイテムの種類を数える
					}
				

 DEBUG_ITEMは常に先頭にあり、実際のアイテムに干渉せずに何かを
試したい時に使用します。COUNT_NUM_ITEMSは常にリストの最後にあり、
アイテムの種類を数えます。
そのため必ずDEBUG_ITEMは先頭の位置、COUNT_NUM_ITEMは最後に来るようにします。
 よってこの2つの間に実際にゲーム上で使用されるアイテムを定義します。

ページTOP

ステータスへのリンク

 ステータスへのリンクを作ります。

					var playerInventory: int[];
					var playerStatus: PlayerStatus;
					playerStatus = GetComponent(PlayerStatus);
					private var repairHealAmt = 5.0;	//回復アイテムの回復量
				

 プレイヤーの所持する各アイテムの数を格納できように配列を
int型で宣言します。回復アイテムを使用した時の回復量(ここでは5.0)も
定義します。

ページTOP

プレイヤーの持ち物を初期化

 プレイヤーの初期化処理を書きましょう。

					//プレイヤーの初期の持ち物
					function Start()
					{
						playerInventory = new int[InventoryItem.COUNT_NUM_ITEMS];
						for(var item in playerInventory) {
							playerInventory[item] = 0;
						}
						//最初に持たせておくアイテム
						playerInventory[InventoryItem.REPAIR] = 2;
					}
				

 各アイテムの所持数を巡回して全てに0を入れます。その後に
最初に持たせておくアイテムを設定します。ここでは回復アイテムを
ゲーム開始時に2個持たせています。
 ここでCOUNT_NUM_ITEMSを使うことで後で新しいアイテムを追加しても適切に
初期化されるようになっています。

ページTOP

アイテムの取得・使用

 持ち物を取得したり、使用することで持ち物のアイテムを増減
させる関数を準備します。

					//所持アイテムの管理
					function GetItem(item: InventoryItem, amount: int)
					{
						playerInventory[item] += amount;
					}

					//アイテムにを使う
					function UseItem(item: InventoryItem, amount: int)
					{
						//数が足りないときは何もしない
						if(playerInventory[item] <= 0) return;
	
						//数が足りていれば使う
						playerInventory[item] -= amount;
		
						switch(item){
							case InventoryItem.REPAIR:
							playerStatus.AddHealth(repairHealAmt);
						}
					}
				

 GetItem関数はアイテムを拾った時に処理される関数です。反対に
UseItem関数はアイテムを使用した時に動作します。またUseItem関数では、
Switch文でそのアイテムが何をするアイテムなのか判断して処理します。

ページTOP

アイテムの所持数を調べる関数

 後々プレイヤーのアイテムの所持数を調べるときに役立ちます。

					//アイテムの在庫を比較してcompNumberと等しいかどうか
					function CompareItemCount(compItem: InventoryItem, compNumber: int)
					{
						return playerInventory[compItem] >= compNumber;
					}

						//アイテムの数を取得
					function GetItemCount(compItem: InventoryItem)
					{
						return playerInventory[compItem];
					}

					@script AddComponentMenu("Inventory/Player's Inventory")
				

 書き終わったらプレイヤー(ここではConstructor)にこのスクリプトを当てます。
最後に次のリンクから参考としてJavaScriptファイルをダウンロードできます。 DlImage

持ち物管理のスクリプトを作り終えたら今度は画面上に反映させましょう。
→次項へのリンク

ページTOP