还有个问题,我在场景中新建了一个表示人物的空对象
然后给这个空对象添加了animator,刚体,碰撞器等组件,一切正常,我然后想用那个ui对象slider充当人物血条,想把slider作为人物的子对象,但是,人物实在场景里。而slider要在canvas下,这两个层统一不到一起啊,感觉这不合理吧?总不能一切都放在画布下吧。感觉再建个新画布给人物专用也一样不合理啊。 建两个场景,然后把这两个场景创联在一起 可以在人物里创建一个子物体里面创建一个画布,将画布设置成world什么的,讲画布看向摄像机,但是视角偏的话,血条会斜一点 方法1画布作为world方法2将人物血条世界位置转为屏幕位置 画布没更新吗 人物位置转屏幕位置。血条放画布中一直跟随屏幕位置 可以试试获取角色的世界坐标位置转屏幕坐标
Vector3 屏幕坐标 = Camera.main.WorldToScreenPoint(角色的世界坐标);
这样获取的屏幕坐标x和y值是在屏幕上的位置,z值是距离屏幕的距离(深度)。如果z值为正则位置在屏幕前方,z值为负位置在屏幕后方,为负则不应该显示UI。
然后再通过RectTransformUtilities类静态方法(https://docs.unity3d.com/ScriptReference/RectTransformUtility.html)转为在UI Canvas下的本地坐标,将血条ui组件的坐标与之同步。 感觉以上回答都不太对吧,2d人物算精灵,血条应该算人物的子物体,这么想没毛病吧 再建个画布是可以行的,没啥问题 直接用spriterenderer弄血条就是了
页:
[1]
2