血条遮挡问题详解
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的显示