Unity3d制作血条的三种方法

发表于2017-12-28
评论0 2.23w浏览

血条这个功能在多数类型的游戏都会有,那么在开发过程中如何制作血条呢?下面给大家分享了三种制作血条的方法。


方法一:(推荐)

结果:血条跟随目标物体移动,血条一直面向摄像机


步骤一:

1.制作一个血条(Image)的预设体;

2.在Canvas 中添加一个Plane,作为血条的父物体;

3.(1,2)准备工作做完了,思路:在生成游戏物体时,生成血条,把游戏物体的3D坐标转换为屏幕坐标,让血条的坐标等于游戏物体的屏幕坐标,如果要修改,可以添加一些偏移,

代码如下

using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
using UnityEngine.UI;  
public class EnemyState : MonoBehaviour {  
    //声明你需要用到的变量  
    private  GameObject HP_imageGameobject;  
    private GameObject HP_imageGameObjectClone;  
    private Transform HP_Parent;  
    private Vector3 EnemySceenPosition;  
    void Start () {  
        //获取复制HP的预制体(prefab)  
        HP_imageGameobject=Resources.Load<GameObject>("Enemys/Image_blod");  
        //获取放HP血条的父物体  
        HP_Parent = GameObject.FindWithTag("HPPosition").transform;  
        //把游戏物体的世界坐标转换为屏幕坐标  
        EnemySceenPosition=Camera.main.WorldToScreenPoint(transform.position);  
        //创建一个Clone血条图片  
        HP_imageGameObjectClone = Instantiate(HP_imageGameobject,EnemySceenPosition, Quaternion.identity);  
        //设置血条的父物体  
        HP_imageGameObjectClone.transform.SetParent(HP_Parent);  
    }  
    void Update () {  
        //没帧都去执行使血条跟随物体  
        PHFollowEnemy();  
    }  
    //血条放置到Canvas另一个Plane中 并跟随物体移动  
    void PHFollowEnemy()  
    {  
        //把物体坐标转换为屏幕坐标,修改偏移量  
        EnemySceenPosition= Camera.main.WorldToScreenPoint(transform.position)+new Vector3(0,50,0);  
        HP_imageGameObjectClone.transform.position = EnemySceenPosition;  
    }  
} 

方法二:(推荐)

和方法一相似,只是把血条的坐标转换到3D场景中 ,和游戏物体的坐标相等,之后微调。


方法三:

如果血条不一定面向摄像机,可以把(用Canvas单独做血条)血条设置为游戏物体的子物体;

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引