也谈Unity血条的制作
制作 Unity
2023-09-11 14:20:53 时间
如果百度一下,会有很多很多关于血条的制作方法。经过试验,总结了最最简单、有效的方法:
1、创建一个Canvas,设置为WorldSpace模式,作为子物体挂到需要显示血条的角色物体下面,设置一下位置和Scale,让他大小和位置比较适合角色。
2、在Canvas里面加一个Image,改名为Background,背景图片选UISprite或者Background都可,颜色选择背景色,比如红色。Anchors设置为(min(0,0)max(1,1)),这样如果Canvas大小改变,会随着父类改变尺寸。
3、在Background下再建一个Image,改名为HealthBar,背景图片设置同上,颜色任意比如绿色,关键是,设置Anchors为(min(0,0),max(1,1)),Pivot设置为(0,0.5),这样,这个图片大小改变时,总是左边对齐的。
添加一个脚本代码如下:
class HealthBar : MonoBehaviour
{
[SerializeField, Tooltip("血量最大值")] protected float m_MaxHealth;
protected float m_ParentWidth;
protected RectTransform m_HealthBar;
protected float m_CurHealth;
public float CurrentHealth
{
get { return m_CurHealth; }
set
{
m_CurHealth = value;
RecalcSize();
}
}
public float MaxHealth
{
get { return m_MaxHealth; }
set
{
m_MaxHealth = value;
RecalcSize();
}
}
private void Awake()
{
RectTransform background = transform.Find("Background").GetComponent<RectTransform>();
m_ParentWidth = background.rect.width;
m_HealthBar = transform.Find("Background/Healthbar").GetComponent<RectTransform>();
m_CurHealth = m_MaxHealth;
RecalcSize();
}
private void RecalcSize()
{
if (m_CurHealth > m_MaxHealth)
m_CurHealth = m_MaxHealth;
if (m_CurHealth <= 0)
m_CurHealth = 0;
m_HealthBar.sizeDelta = new Vector2(m_CurHealth / m_MaxHealth * m_ParentWidth, m_HealthBar.sizeDelta.y);
}
private void Update()
{
// 这里不能单纯的用lookat,因为血条会跟随角色旋转。
transform.rotation = Camera.main.transform.rotation;
}
}
相关文章
- Android开发之点九图的制作说明
- Cocos2D:塔防游戏制作之旅(十六)
- Cocos2D:塔防游戏制作之旅(四)
- Unity3D_(游戏)2D简单游戏制作过程:捕获高空掉落保龄球
- unity web项目发布服务器Data file is corrupt (not a Unity W
- unity3d学习笔记(十九)--ngui制作3d人物头顶的头像和血条
- Unity bundle的制作和使用
- Unity for Windows: III–Publishing your unity game to Windows Phone Store
- 制作引导页[2]
- 生活娱乐 Wifi机器人的制作流程
- PS 如何制作Vista的毛玻璃效果
- GBK点阵显示字库的制作和使用
- python制作一个网易音乐下载器
- 【保姆级教程】Python 制作数据可视化大屏其实特简单
- 自制Unity小游戏TankHero-2D(2)制作敌方坦克
- 自制Unity小游戏TankHero-2D(1)制作主角坦克
- 77.第十七章 企业级容器技术docker -- Docker 镜像制作和管理(五)
- y25.第二章 Docker从入门到精通 -- docker镜像制作和管理(七)
- 游戏制作之路(48)地形纹理工具
- 游戏制作之路(26)Camera(摄像机)的清除标志Depth only
- 内网渗透(二十二)之Windows协议认证和密码抓取-Silver Ticket白银票据制作原理及利用方式