VR设备:Pico 4 Pro
Unity版本:2021.3.25f1c1 LTS
点击效果失效
原代码:这个点击效果不明显,Trigger按下松开的过程中,3D物体的状态都可能改变。
//手柄controller
//获取手柄Trigger键是否按下,保存到isTrigger
rightTargetDevice.TryGetFeatureValue(CommonUsages.triggerButton, out bool isTrigger);
void Update()
{
if (isTrigger)
{
//当射线发生碰撞时
if (Physics.Raycast(rayRight, out hitRight))
{
if (hitRight.transform.gameObject.tag == "FangHuTool")
{
hitRight.collider.gameObject.GetComponent<VREventSys>().OnRayClick();
}
}
}
}
//被点击物体Controller
private void OnRayClick()
{
transform.GetChild(0).gameObject.SetActive(true);
}
我想要实现的效果是,Trigger键在按下的过程中,3D物体不要有任何变化,在松开后,再进行点击效果的展示。
获取CommonUsages.trigger字段,保存在TriggerValue中,可对扳机按压程度进行设置。我这儿只要riggerValue >= 0.1f,判断按压的bool值triggerPresses是否为false,就是在按压中,将triggerPresses设为true;当riggerValue <= 0.1f且riggerPresses为true,就说明riggerValue是松开时的值变化,这时进行效果设置。
//手柄controller
private bool triggerPressed = false;
rightTargetDevice.TryGetFeatureValue(CommonUsages.trigger, out float TriggerValue);
void Update()
{
//按下时没反应
if (TriggerValue >= 0.1f)
{
if (!triggerPressed)
{
triggerPressed = true;
}
}
//按下松开后再展示效果
else if (TriggerValue <= 0.1f && triggerPressed)
{
triggerPressed = false;
//当射线发生碰撞时
if (Physics.Raycast(rayRight, out hitRight))
{
if (hitRight.transform.gameObject.tag == "FangHuTool")
{
hitRight.collider.gameObject.GetComponent<VREventSys>().OnRayClick();
}
}
}
}
松开Trigger键展示效果