123456790 发表于 2024-5-7 14:10:29

还有个问题,我在场景中新建了一个表示人物的空对象

然后给这个空对象添加了animator,刚体,碰撞器等组件,一切正常,我然后想用那个ui对象slider充当人物血条,想把slider作为人物的子对象,但是,人物实在场景里。而slider要在canvas下,这两个层统一不到一起啊,感觉这不合理吧?总不能一切都放在画布下吧。感觉再建个新画布给人物专用也一样不合理啊。

poney 发表于 2024-5-7 14:11:06

建两个场景,然后把这两个场景创联在一起

麻辣鸡翅 发表于 2024-5-7 14:11:36

可以在人物里创建一个子物体里面创建一个画布,将画布设置成world什么的,讲画布看向摄像机,但是视角偏的话,血条会斜一点

唰唰冷呵映 发表于 2024-5-7 14:12:30

方法1画布作为world
方法2将人物血条世界位置转为屏幕位置

慧眼识英雄1 发表于 2024-5-7 14:12:51

画布没更新吗

永远爱你冰塘 发表于 2024-5-7 14:13:46

人物位置转屏幕位置。血条放画布中一直跟随屏幕位置

我爱霍启刚掖 发表于 2024-5-7 14:14:02

可以试试获取角色的世界坐标位置转屏幕坐标
Vector3 屏幕坐标 = Camera.main.WorldToScreenPoint(角色的世界坐标);
这样获取的屏幕坐标x和y值是在屏幕上的位置,z值是距离屏幕的距离(深度)。如果z值为正则位置在屏幕前方,z值为负位置在屏幕后方,为负则不应该显示UI。
然后再通过RectTransformUtilities类静态方法(https://docs.unity3d.com/ScriptReference/RectTransformUtility.html)转为在UI Canvas下的本地坐标,将血条ui组件的坐标与之同步。

123456790 发表于 2024-5-7 14:14:34

感觉以上回答都不太对吧,2d人物算精灵,血条应该算人物的子物体,这么想没毛病吧

我爱霍启刚掖 发表于 2024-5-7 14:15:11

再建个画布是可以行的,没啥问题

计划你大爷计j 发表于 2024-5-7 14:15:50

直接用spriterenderer弄血条就是了
页: [1] 2
查看完整版本: 还有个问题,我在场景中新建了一个表示人物的空对象