▽メニュー開く 
3Dアクションゲームを作る

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