Unity实现3D物体遮挡血条
Unity 实现3D物体遮挡血条
前言:在游戏开发中,我们经常会遇到UI和3D物体的层级遮挡问题,最常见的比如血条跟随敌人的时候,多个敌人的血条会遮挡住玩家或者3D物体,去网上查了一下也没有很好的解决方案,自己尝试了一下,发现还是很简单的
UI血条的制作
利用Unity自带的UI组件Scrollbar
可以简单的做一个血条的预制体,如下图:
简单写一个血条跟随的代码,可以在Update
调用,让其跟随我的角色
public void HPFlow() { //坐标转换,这里是通过anchoredPosition给UI赋的位置 hpBar.GetComponent<RectTransform>().anchoredPosition = Camera.main.WorldToScreenPoint(transform.position + Vector3.up); }
好了,现在就会遇到下面的问题:
可以看到血条将玩家的模型给遮挡住了,在大部分视角固定的情况下是没有问题的,但是难免会有视角移动的需求,这里就要考虑血条遮挡带来的问题了
设置HpLayer解决问题
解决方案很简单,我们知道Canvas
画布的渲染模式分为Screen Space - Overlay
,Screen Space - Camera
和World Space
详细的Canvas
讲解推荐:https://blog.csdn.net/weixin_45375968/article/details/124295976
这里我们将血条单独拿出来,放到一个Canvas下面,做一个血条的层级(HpLayer),并将这个Canvas
调成Screen Space - Camera
模式,剩余的UI功能我们可以直接放到另一个Canvas
下面(这个Canvas
的模式随意),避免3D物体遮挡到其他UI,这样就得到了以下的效果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)