如何在HTC VIVE控制器上打开GUI角度旋转?
0 1128
0
该提问暂无详细描述
收藏
2021-01-12 11:29 更新 gitvrar •  467
共 1 个回答
高赞 时间
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相同

收藏
2021-01-12 11:46 更新 同步 •  1732