素人Unity練習帳
HitPoint表示
LabelPfbという名前のオブジェクトを作る
prefab化する
HierarchyにあるLabelPfbを消す
Project>Assets>Prefabs>labelPfb
に、labelDisp.csを追加する
Hirarchy>PlayerにPlayerGui.cs
Hierarchy>EnemyにenemyGui.cs
を作る
using UnityEngine;
using System.Collections;
public class labelDisp : MonoBehaviour {
GameObject player;
public int myHp;
// Use this for initialization
void Start () {
player = GameObject.Find("Player");
// 親オブジェクトを確認
Vector3 parentsPosX = gameObject.transform.parent.position;
Debug.Log ("親ポジショ ン"+parentsPosX);
if (gameObject.transform.parent.tag == "Player") {
myHp = gameObject.GetComponentInParent<PlayerController>().MyHitPoint;
}
if (gameObject.transform.parent.tag == "Enemy") {
myHp = gameObject.GetComponentInParent<EnemyMove>().MyHitPoint;
}
}
// Update is called once per frame
void Update () {
if (gameObject.transform.parent.tag == "Player") {
myHp = gameObject.GetComponentInParent<PlayerController>().MyHitPoint;
}
if (gameObject.transform.parent.tag == "Enemy") {
myHp = gameObject.GetComponentInParent<EnemyMove>().MyHitPoint;
// カメラの向きと合わせると、常に正面を向く
transform.rotation =player.transform.rotation;
}
GetComponent<TextMesh> ().text = myHp.ToString();
}
}
-----labelDisp.cs-----------
transform.rotation =player.transform.rotation;
プレイヤーの回転と同じにして、常むむきを一定にしてある
-------PlayerGui.cs----------
using UnityEngine;
using System.Collections;
public class PlayerGui : MonoBehaviour {
public GameObject labelPfb ;
public int myHp;
public GameObject labelNameObj;
public Vector3 screenPos;
// Use this for initialization
void Start () {
Vector3 screenPos = new Vector3 (0, 0, 0);
GameObject labelNameObj = Instantiate(labelPfb,screenPos, Quaternion.identity) as GameObject;
labelNameObj.transform.parent=transform;
labelNameObj.transform.localPosition = new Vector3 (0, 2.3f, 0);
}
// Update is called once per frame
void Update () {
}
}
-------PlayerGui.cs----------
-------EnemyGui.cs----------
using UnityEngine;
using System.Collections;
public class EnemyGui : MonoBehaviour {
public GameObject labelPfb ;
public int myHp;
public GameObject labelNameObj;
public Vector3 screenPos;
// Use this for initialization
void Start () {
GameObject labelNameObj = Instantiate(labelPfb,screenPos, Quaternion.identity) as GameObject;
labelNameObj.transform.parent=transform;
labelNameObj.transform.localPosition = new Vector3 (0, 2.3f, 0);
}
// Update is called once per frame
void Update () {
}
}
-------EnemyGui.cs----------
試してみると、以下のようになる
ここまでが、単純な対戦になりますが
これだと、
Player,Enemy,それ以外のキャラクターのパラメーターを一元管理できていないので
キャラクターが増えたり、パワーアップアイテムを使う場合など
オブジェクト間のやり取りが面倒になりますので
パラーメータを一元管理できるようする必要があります。
その方法は、後日書く予定です。
小休止
戻る
Reon Viewin