steamvr unity 连接眼镜_unity SteamVR2.0 激光与UGUI交互(一)

效果图:

96f09a581e0d

UGUI交互E.gif

发射激光:

在StemVR中自带有SteamVR_LaserPointer的脚本,是用来控制激光。

96f09a581e0d

SteamVR_LaserPointer.png

开启激光:

SteamVrLaserPointer.GetComponent().enabled = true;

在开启激光时,会创建一个cube,用来模拟激光

关闭激光:

SteamVrLaserPointer.GetComponent().enabled = false; //射线关闭

SteamVrLaserPointer.GetComponent().pointer.transform.localScale = new Vector3(0, 0, 0);

UI互交:

使用UnityEvent的目的是,绑定事件可视化

96f09a581e0d

image.png

private PointerEventArgs pointerEventArgs;

public SteamVR_LaserPointer SteamVrLaserPointer;

public UnityEvent mOnEnter = null;

public UnityEvent mOnClick = null;

public UnityEvent mOnUp = null;

void OnEnable()

{

SteamVrLaserPointer.PointerClick += SteamVrLaserPointer_PointerClick;

SteamVrLaserPointer.PointerIn += SteamVrLaserPointer_PointerIn;

SteamVrLaserPointer.PointerOut += SteamVrLaserPointer_PointerOut;

}

void OnDestroy()

{

SteamVrLaserPointer.PointerClick -= SteamVrLaserPointer_PointerClick;

SteamVrLaserPointer.PointerIn -= SteamVrLaserPointer_PointerIn;

SteamVrLaserPointer.PointerOut -= SteamVrLaserPointer_PointerOut;

}

private void SteamVrLaserPointer_PointerOut(object sender, PointerEventArgs e)

{

if (e.target.gameObject == this.gameObject)

{

if (mOnUp != null) mOnUp.Invoke();

}

}

private void SteamVrLaserPointer_PointerIn(object sender, PointerEventArgs e)

{

if (e.target.gameObject == this.gameObject)

{

if (mOnEnter != null) mOnEnter.Invoke();

}

}

private void SteamVrLaserPointer_PointerClick(object sender, PointerEventArgs e)

{

if (e.target.gameObject == this.gameObject)

{

Debug.Log(e);

if (mOnClick != null)

{

mOnClick.Invoke();

}

}

}

当获取手柄的GrabGrip键,按下就执行互交


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部