如何使UI按钮跟随2d游戏对象



刚接触团结,就遇到了一个问题。我不确定如何让画布上的UI按钮跟随2D屏幕空间中的刚体游戏对象。我想让按钮的x和y位置与RB的x和y匹配,这样理论上,如果我点击RB,它就会激活按钮。然而,我不确定如何在我的项目中实现这样的东西。

我试着使用transform.position,并将ui按钮pos和RB pos等同在一起,但它仍然是静态的。然而,我确实编写了RB移动到指定x点的脚本,直到那时,尽管RB事先移动了,但按钮也移动了。

这就是Camera.WorldToScreenPoint()文档中的示例。将此脚本附加到您的按钮:

public class ObjectFollow : MonoBehaviour
{
public Transform Follow;
private Camera MainCamera;
// Start is called before the first frame update
void Start()
{
MainCamera = Camera.main;    
}
// Update is called once per frame
void Update()
{
var screenPos = MainCamera.WorldToScreenPoint(Follow.position);
transform.position = screenPos;
}
}

我有一个想法要实现,你可以使用世界空间画布,并作为该对象的子对象"你提到的具有刚体的";现在,当它移动画布及其内容时,请注意
了解画布


现在在层次结构窗口中按下您的对象右键单击,然后单击UI,然后按下按钮
这将创建新的画布,并将按钮附加到下面的层次结构




现在选择画布并重置其宽度高度,将比例设置为小值0.01,例如

然后将其渲染模式更改为"太空世界"并指定相机

您应该确保您有事件系统它应该自动创建,但如果您在层次结构窗口中没有事件系统,则事件永远不会工作


画布会这样画布图像现在你可以选择这个按钮并添加一个函数来使用onClick调用,或者你可以将它传递给另一个脚本来动态添加这个函数,如下所示从脚本向UI按钮添加事件

最新更新