血条遮挡问题详解

Posted 作孽就得先起床

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了血条遮挡问题详解相关的知识,希望对你有一定的参考价值。

方案:

1、

2、

 3、

血条总是要跟踪对象的

代码如下:

public RectTransform _game;
    Vector3 _position;
     Camera _camera;
    void Start()
    
        _camera=Camera.main;
        
    

    // Update is called once per frame
    void Update()
    
        _position = _camera.WorldToScreenPoint(transform.position + Vector3.up);
       // _position.y= 0;
        _game.anchoredPosition3D= _position;
    

 

调整遮挡只需要调整Canvas的这里即可,根据你的需求调整unity的层级渲染完成遮挡如下图:

原理:

通过不同的层级面板进行不同的渲染,进行层级展示

利用screen space-camera模式,Canvas覆盖整个屏幕空间画布也是填满整个屏幕空间,Canvas 被放置于指定摄像机的前方

在这种,模式下面 UI 并不一定能渲染在 3d 元素之上

利用这种特性完成血条能够被3d物体遮挡

但:

必须在摄像机的远近平面之间才会被渲染
即使摄像机是 Perspective 模式,Canvas 距离摄像机的远近依然不会影响其显示大小
其它3元素可以和 Canvas 产生遮挡关系,距离摄像机更近的元素会遮盖住 Canvas 上面的 UI
摄像机的缩放/平移/旋转,以及 fov 的变化,不会影响 Canvas 显示结果,Canvas
永远是放置在距离摄像机视口一定距离的地方,且与摄像机水平视线垂直
所以用的时候要注意

要根据不同情况采用不同的相机渲染模式

血条在左下角是因为unity采用左手坐标系,它的屏幕转换坐标(0,0)的起始点在整个屏幕的左下角,人物转到屏幕,人物坐标可是从(0,0,0)算的

视口坐标与屏幕坐标

WorldToViewportPoint:世界坐标转视口坐标

WorldToScreenPoint:世界坐标转屏幕坐标

视口图:

屏幕图:

详细参见:(33条消息) Unity世界坐标转换屏幕坐标(详解)_unity 世界坐标转屏幕坐标_Unity鼓励师的博客-CSDN博客

slider制作经验条/血条/遮罩

今天想实现一个经验条的制作,但是使用slider一直做起来都有些问题:

1.在自己添加的slider组件上放置full rect 和handle rect这两个属性的时候,图片会被拉伸

2.在改变slider的value时,图片缩放大小达不到指定幅度

3.如何在图片上添加一个遮罩,通过修改遮罩的大小来改变经验条的大小

一、图片拉伸问题:

  应该是手动添加slider组件导致的问题,我的解决方案是全删掉,重新添加一个做好的slider预制进来,然后在做好的预制上进行修改,不过要调整好包括full rect和handle rect还有slider本身的大小,最好都调整成一致的,然后把对应的图片替换成已经制作好的美术资源。

  p.s.其中在修改里面填充条的时候,可能会因为图片的拉伸导致左右的纹理被拉伸,这个时候可以使用sprite的九宫格模式对图片进行修改。

  当你把图片使用九宫格切开后,图片就会使用对应的拉伸规则进行拉伸,详细可以参照下面的教程进行学习。拉伸后注意要把image的格式设置成

技术分享

  九宫格教程在这里:http://www.unity.5helpyou.com/3258.html

二、图片缩放大小不够:

  这个是你的full rect和handle rect共同导致的,只要把他们两个的大小调成一样的,应该就不会出现这种问题了
三、关于遮罩:

  遮罩的话,我也是胡乱配置,然后就可以用了。。

  因为遮罩肯定需要父子关系嘛,然后被遮罩的肯定就是内部的进度条,所以使用父物体进行遮罩的时候,我也使用了和进度条一样的sliced类型,并勾选了fill center,然后把这个父物体拖给slider的fill rect就可以用了。

  关于遮罩,我也查了相关资料,在这:http://blog.csdn.net/u013015161/article/details/46038989

四、最后,关于我的slider配置信息大致如下:

层级视图布局:技术分享

slider组件技术分享

遮罩组件技术分享

实际效果:技术分享

以上是关于血条遮挡问题详解的主要内容,如果未能解决你的问题,请参考以下文章

Ruby‘s Adventrue游戏制作笔记(十三)Unity血条UI的显示

Ruby‘s Adventrue游戏制作笔记(十三)Unity血条UI的显示

OpenGL核心技术之深度测试

实现unity自定义资源

Unity入门计划2D游戏中遮挡问题的处理方法&伪透视

使用Multiplayer Networking做一个简单的多人游戏例子-3/3(Unity3D开发之二十七)