美文网首页
2018-10-16 unity UI跟随3D物体

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

作者: 流光念岁月 | 来源:发表于2018-10-16 18:27 被阅读0次
    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

    相关文章

      网友评论

          本文标题:2018-10-16 unity UI跟随3D物体

          本文链接:https://www.haomeiwen.com/subject/bgahzftx.html