Unity3D: UGUI的相机跟随3D物体(非主相机)

在网上看了很多UI跟随3D物体的实现,往往都是用的主相机(Camera.main),用的是Camera.main.WorldToScreenPoint  API,但是有些时候UI跟随3D物体用不到主相机,需要用到另一个相机(UI相机),这里有个坑,所以之前我们需要对Canvas组件做一次设置,如下:

                                                 

首先Render Mode (相机渲染)要改为第二个:Screen Space - Camera,然后Render Camera放入自定义的UI相机,但注意的是,UI相机设置跟随代码,需要用主相机转一下再转回来,否则仍会出现

Render Mode = ScreenSpace的情况,代码如下:

 

                                   RectTransform t = obj.GetComponent<RectTransform>();
                                  Vector3 worldPosition = new Vector3(pos.x, pos.y + diff, pos.z);
                                  Vector3 vPos = Camera.main.WorldToScreenPoint(worldPosition);
                                  Vector3 p = GameObject.Find("2DCamera").GetComponent<Camera>().ScreenToWorldPoint(vPos);
                                  t.position = p;

 

obj:UI的GameObject,pos:需要UI所在的位置坐标,可以设置为跟随物体的3D坐标,diff:UI物体离3D物体Y轴差值,2DCamera:自定义的UI相机

注意:如果UI出现很大的情况,占满了屏幕,可以把相机改为正交模式,亲测可用..

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值