【发布时间】:2017-01-07 09:48:40
【问题描述】:
我正在尝试为 HTC VIVE 制作 GUI,但在某些控制器角度打开它时遇到问题。
我做了一些工作并完成了一些粗略的工作,因为我的对象是一个孩子,这让我很难跟踪它的旋转或位置,因为我希望它仅在控制器处于特定角度时打开(作为一个人看着他的手表)
这是一些视觉示例:
这是我管理的一些代码
void RayCastFromHead() // is just a name for Method i am raycasting from a dummy which contains left Grip button
{
if (Physics.Raycast(dummy.position, dummy.up, out hitInfo, 30))
{
transform.rotation.ToAngleAxis(out tempAngle, out tempAxis);
if (hitInfo.collider.name.Contains("Camera (eye)"))
{
if (dummy.gameObject.GetComponent<MeshRenderer>().enabled)
{
if ((transform.localEulerAngles.z > 270.0f && transform.localEulerAngles.z < 315.0f)&&
(transform.position.y > 0.9f && transform.position.y < 2f))
{
staticRotaion = transform.localRotation;
canvasOnHead.GetComponent<TweenScale>().PlayForward();
}
}
}
}
}
我不知道这是做这种任务的正确方法吗? 以简单的方式,我想在某些控制器旋转时显示 GUI。
这就是我所说的我的层次结构
【问题讨论】:
-
请人们帮助我,我真的无法找到适合我需要的任何解决方案
-
我认为你可以问 Renderer.IsVisible 而不是光线投射,应该更容易。
-
-
以下答案不正确,我问的问题不同我不知道为什么人们投票不接受的答案这不是我正在寻找的解决方案,对不起 Stack Community 但是没有帮助
标签: c# unity3d unity5 virtual-reality htc-vive