当前位置: 首页 >  在线学习 >  Unity实现3D物体遮挡血条

Unity实现3D物体遮挡血条

导读:Unity 实现3D物体遮挡血条.######.前言:在游戏开发中,我们经常会遇到UI和3D物体的层级遮挡问题,最常见的比如血条跟随敌人的时候,多个敌人的血条会遮挡住玩家或者3D物体,去网上查了一下也没有很好的解决方案,自己尝试了一下,发现还是很简单的.UI血条的制作.利用Uni

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 - OverlayScreen Space - CameraWorld Space
详细的Canvas讲解推荐:https://blog.csdn.net/weixin_45375968/article/details/124295976
这里我们将血条单独拿出来,放到一个Canvas下面,做一个血条的层级(HpLayer),并将这个Canvas调成Screen Space - Camera模式,剩余的UI功能我们可以直接放到另一个Canvas下面(这个Canvas的模式随意),避免3D物体遮挡到其他UI,这样就得到了以下的效果:

内容
  • 计算机网络概念汇总
    计算机网络概念汇总
    2023-12-05
    1. 模型结构.五层模型 :.应用层、传输层、网络层、数据链路层、物理层。.应用层 :为应用程序提供交互服务。在互联网中
  • UE开发使用Rider时缓存干爆C盘的解决方案
    UE开发使用Rider时缓存干爆
    2023-12-03
    我们在使用Rider开发UE时,Ride会为每一个项目创建一个解决方案缓存,如果开几个新项目写测试demo,我们的C盘会
  • Unity3D 横板跳跃游戏半成品demo源代码
    Unity3D 横板跳跃游戏半成
    2023-12-08
    项目介绍:.基于B站的 Unity3D新手教程 进行学习制作,但视频中的做法有很多BUG,此demo是经过优化,几乎修复
  • 数据分析师如何用SQL解决业务问题?
    数据分析师如何用SQL解决业务问
    2023-12-03
    本文来自问答。.提问:数据分析人员需要掌握sql到什么程度?.请问做一名数据分析人员,在sql方面需要掌握到什么程度呢?
  • Unity 中的存档系统(本地存档)
    Unity 中的存档系统(本地存
    2023-12-09
    思想.在游戏过程中,玩家的背包、登录、人物系统都与数据息息相关,无论是一开始就设定好的默认数据,还是可以动态存取的数据,
  • unity 实现自定义class深度拷贝 deep copy 深度复制 引用类型复制
    unity 实现自定义class
    2023-12-09
    气死我了,搜半天没有,全让序列化再反序列化,又不方便又不美观。结果自己试着一写就通,两行完事。.首先先安装Newtons