前回までで敵と自機を動かすことができました。
今回は自機のHPを設定して敵弾に触れたら
HPを減らして表示したいと思います。
1.ヒエラルキービューで右クリック→create→ UI→ text
名前を HPtext にしました。
HPの初期値を3にするのでnew textの部分を書き換えて
ゲーム最初に表示される文字列を00003に指定。
2.アンカーを画面左上に設定してディスプレイの大きさにかかわらず
画面左上に表示できるようにする。
右のインスペクタビューで設定できますよ。
3.テキストのUIを書き換える監督を作る。
プロジェクトビューで右クリック→create→ C#scriptで
名前を HPkantoku にしました。
4.いろいろ記述していく。
↓最初にUI使うのに必要なこれを宣言
using UnityEngine.UI;
次にMonoBehaviour内で
現在のHPを表示するテキスト用のgameobject型変数、HPdamegeを宣言
GameObject HPdamege;
自分のHPの初期値を宣言
int myhp = 3;
5.スタート関数内で
UIのHPtextを見つけてHPdamegeに代入、実体化
this.HPdamege = GameObject.Find ("HPtext");
6.スタート関数外で
//他のオブジェクトからアクセスできるようにpublicで記述
public void DMGsub() {
//ダメージ受けたらHP減らす
this.myhp -= 1;
//現在のHPを表示して返す。myhpは数値型なのでToStringで文字列に変換。
this.HPdamege.GetComponent
}
7.できたら保存する。
8.ヒエラルキービューで右クリック→create→ create Emptyで
空のGameObjectを作成。
名前を HPkantoku にします。
9.さっき書いたスクリプトを上の空のゲームオブジェクトにD&Dで
アタッチして実体化。
10.自機と弾が衝突したことを監督に伝えて
HPを減らす処理をしてもらうようにする。
自機と弾の当たり判定はEsmoveに書いてあるから
次はこいつを書き換える。
//衝突したら弾を消す処理の部分を
if (kyori < rE + rS) {
Destroy (gameObject);
}
↓このようにする
if (kyori < rE + rS) {
Destroy (gameObject);
//監督に衝突を伝える
//HPdamegeオブジェクトのDMGsub関数にアクセスするための
//gameobject型変数、collisionに
//gameobjectのHPdamegeをfind関数で見つけて実体化。
GameObject collision = GameObject.Find("HPkantoku");
//getcomponentでHPkantokuオブジェクトのDMGsub関数にアクセスすると
//あっちでHP−1してくれてテキスト表示してくれる
collision.GetComponent
}
11.できたら保存して実行してみる。
うほー
できた できたー^^v
だいぶ前に他のオブジェクトにアクセスする方法がわからず
ややこしいテキスト表示法をやらかしたけど
今回はうまくいったかも。
今回出たエラーは
int myhp = 3;の部分を
float myhp = 3.0f;と書いて
DMG関数内で
myhp.ToString("D5")
と書いてしまうと
フロート型で宣言したのにToStringで整数型にしようとしてたから
エラーでした。
//////////////////////////HPkantoku
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //UI使うのに必要
public class HPkantoku : MonoBehaviour {
GameObject HPdamege; //現在のHPを表示するテキスト用のgameobject型変数、HPdamegeを宣言
int myhp = 3; //自分のHPの初期値を宣言
// Use this for initialization
void Start () {
this.HPdamege = GameObject.Find ("HPtext"); //UIのHPtextを見つけてHPdamegeに代入、実体化
}
//ダメージ表示サブ
public void DMGsub() { //他のオブジェクトからアクセスできるようにpublicで記述
this.myhp -= 1; //ダメージ受けたらHP減らす
//現在のHPを表示して返す。myhpは数値型なのでToStringで文字列に変換。
this.HPdamege.GetComponent
}
}
////////////////////////////////////////
ー広告ー