2018-10-16 unity UI跟随3D物体

image.png

要求将白色立方体移动时 红色圆圈 会跟随 白色立方体移动 并且 红色圆圈在白色立方顶上。

  1. 新建Image ,将Image 宽、高设为红色圆圈的大小,将Pivot 设置 y==0,删除Image组件,重命名为followRoot
  2. 新建Image 命名为 circle,即红色圆圈。作为followRoot的子节点,并将红色圆圈位置设为零
  3. 在 新建脚本 Follow 添加到followRoot 对象上
    在 脚本 Follow Update 方法里 写一句话
    Vector3 length = trans.GetComponent<MeshFilter>().mesh.bounds.size;
    float ylength = length.y * trans.lossyScale.y;
    transform.position = Camera.main.WorldToScreenPoint(trans.position+ new Vector3(0, ylength / 2, 0));
    target对象即为白色立方体 定义 public Transform target;

4.运行程序 效果是


image.png
  1. 此时需要将红色的圆圈放置到立方体顶上,调整 circle 位置,暂且调高度100


    image.png

    6.调整后的效果如下:

image.png

总结 :微调位置,调整不是followRoot,而是followRoot的子节点circle,
也可以用代码修改circle 的位置。
这样做的好处是 一旦 程序窗口发生变化,circle 依然能保持理想跟随状态。不会发生太大的偏移。如果将位置微调followRoot,或者 circle (作为独立节点,没有父节点) 时窗口程序发生变化 后 会有较大的偏移,和理想状态有差别。

例如 将刚才的代码修改为
这时偏移对象是followRoot
transform.position = Camera.main.WorldToScreenPoint(target.position)+offset;

一旦出现窗口分辨率发生变化,就会 不准确,会有较大的偏差


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Unity简介 1. Unity界面 Shift + Space : 放大界面 Scene界面按钮渲染模式2D...
    MYves阅读 12,708评论 0 22
  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 10,632评论 3 23
  • 赵文茜阅读 1,391评论 0 0
  • 成人童话 《射雕英雄传》讲的是武侠,说的是侠义。但实则却是一部成人童话小说。打动我的无非还是靖蓉最甜蜜的爱情故事。...
    后来我来了阅读 4,549评论 5 4
  • 0512晨读 面是由无数的线构成,而线又是由无数的点构成的,需要建立起自己的知识城堡,点是最基本的要素,把点连接起...
    三月Zoro君阅读 5,292评论 0 2

友情链接更多精彩内容