要求将白色立方体移动时 红色圆圈 会跟随 白色立方体移动 并且 红色圆圈在白色立方顶上。
- 新建Image ,将Image 宽、高设为红色圆圈的大小,将Pivot 设置 y==0,删除Image组件,重命名为followRoot
- 新建Image 命名为 circle,即红色圆圈。作为followRoot的子节点,并将红色圆圈位置设为零
- 在 新建脚本 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.运行程序 效果是
-
此时需要将红色的圆圈放置到立方体顶上,调整 circle 位置,暂且调高度100
6.调整后的效果如下:
总结 :微调位置,调整不是followRoot,而是followRoot的子节点circle,
也可以用代码修改circle 的位置。
这样做的好处是 一旦 程序窗口发生变化,circle 依然能保持理想跟随状态。不会发生太大的偏移。如果将位置微调followRoot,或者 circle (作为独立节点,没有父节点) 时窗口程序发生变化 后 会有较大的偏移,和理想状态有差别。
例如 将刚才的代码修改为
这时偏移对象是followRoot
transform.position = Camera.main.WorldToScreenPoint(target.position)+offset;
一旦出现窗口分辨率发生变化,就会 不准确,会有较大的偏差