ステータスを扱うスクリプトを作る

移動できるようになったキャラクターにステータスを付加してみましょう。
ここでは体力値を例に説明していきます。

スクリプトの保存場所と追加の方法

新しく作るスクリプトをまとめるフォルダを作り、そこにスクリプトを追加します。

  1. Projectビュー上で左クリック→「Create」からFolderを選択
  2. 新しく作ったフォルダにわかりやすいように「Script」など名前をつけておく

  3. そのフォルダで左クリック→「Create」からJavaScriptを選択

変数を定義

 スクリプトには「PlayerStatus」と名前をつけておきましょう。
自動生成されたソースは全て消しても構いません。
このスクリプトをプレイキャラクター自身に割り当てます。
(ここではConstructorです。)

Constructor1  

それでは次のようにデータを格納する変数を定義してください。

					//ステータスの変数------------
					var health : float = 10.0;	//体力値
					var maxHealth : float = 10.0;	//最大体力値
				

移動するためのスクリプト「CametaRelativeControl.js」にアクセスするために
キャラクター制御のコンポーネントを次のようにして変数にキャッシュします。

					//コントローラへのキャッシュ------------------
					var playerController: CameraRelativeControl; 
					playerController = GetComponent(CameraRelativeControl) ;
					var controller : CharacterController;
					controller = GetComponent(CharacterController);
				
ページTOP

体力を追加する関数

 アイテムなどを取得して体力を回復する場合などに呼び出される関数を作成します。

					function AddHealth(boost : float)
					{
						//体力を回復する
						health += boost;
						if(health >= maxHealth) {
						health = maxHealth;
						}
						print("add health: " + health);
					}
				

 いつでもこの関数を呼び出して、任意の体力値をキャラクターの持つ体力に
加えることができます。

ページTOP

体力を減らす関数

 攻撃などでダメージを受けた場合に呼び出される関数を作成します。

					function ApplyDamage(damage : float)
					{
					//ダメージを与える
					health -= damage;
					if(health <= 0) {
						health = 0;	//体力が0であることを確認
						Die();	//Die関数を呼び出す
						}
					}
				
				

Die関数は次に作成します。

ページTOP

死亡と再出現の関数

 体力が0になって死んでしまい、再び出現させる場合に呼び出す関数を作成します。

					function Die()
					{
					print("dead!!");
					HideCharacter();	//キャラクターを消す
					yield WaitForSeconds(1);	//1秒待つ
					ShowCharacter();	//キャラクターを再出現させる
					health = maxHealth;	//体力を満タンにする
					}
				

 この処理によってキャラクターが一旦消えて1秒経つと、
再び体力が満タンの状態で復活します。

ページTOP

キャラクターを隠す関数と出現させる関数

 前項で作成したDie関数に呼び出される2つの関数を作成します。

					function HideCharacter()	//キャラクターを隠す関数
					{
						GameObject.Find("対象のメッシュを指定").GetComponent(SkinnedMeshRenderer).enabled = false;
						playerController.isControllable = false;
					}

						function ShowCharacter(){	//キャラクターを出現させる関数
						GameObject.Find("対象のメッシュを指定").GetComponent(SkinnedMeshRenderer).enabled = true;
						playerController.isControllable = true;
	
					}
				

 "対象のメッシュを指定"の箇所には、キャラクターのメッシュを指定します。
(Constructorの場合に対象となるメッシュは「Bip001」です。) 最後に次のリンクから参考としてJavaScriptファイルをダウンロードできます。

DlImage

ステータスのスクリプトを作り終えたら、次はゲームで使用するアイテムの設定に移ります。
→次項へのリンク

ページTOP