美文网首页
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