0
有一个简单的解决方案来处理UI旋转。 如果您有一个用于GUI的画布,该画布可以是任何对象的子对象。如果将画布(此菜单的根)添加为左手的子对象,则它应随左手移动和旋转。
请注意,画布的渲染模式必须为World Space
。
这是父项
正确设置画布的rect变换的值(最重要的部分是pos.z,我更改了画布的比例而不是更改z。我可以更改画布的宽度和高度,但这会产生不利影响)
旋转父对象(左手)时,其行为将与您描述的一样:
编辑: 将此脚本添加到相机
public class LookAtWatchController : MonoBehaviour
{
public GameObject menuGUI;
public GameObject hand;
void Update(){
if(transform.eulerAngles.x > 10)
{
menuGUI.transform.eulerAngles = new Vector3(transform.eulerAngles.x, 0, 0);
menuGUI.SetActive(true);
menuGUI.transform.position = hand.transform.position;
}
else{
menuGUI.SetActive(false);
}
}
}
将gui菜单分配给 menuGUI
将左手分配给 hand
您还可以在menuGUI旋转中包括手的旋转元素:
menuGUI.transform.eulerAngles = new Vector3(transform.eulerAngles.x, hand.transform.eulerAngles.y, hand.transform.eulerAngles.z);
我尚未对此进行测试,但menuGUI.transform.eulerAngles = new Vector3(transform.eulerAngles.x, 0, 0);
也可以正常工作。
正如您在下方看到的那样,当在相机前面看到画布时,相机和画布的rotation.eulerAngles.x相同
收藏