Unity HTC Vive实现物体受手柄触发,方法并显示在用户朝向方向

在VR虚拟场景搭建的项目中,需要实现,三维物体部分放大的效果,展示不同组成部分的介绍功能,同时便于观察。

我设想通过手柄触碰目标物体,扣动扳机触发事件,目标物体放大,其他部分隐藏,关闭渲染。在放大的物体上扣动扳机,物体返回原样。同时,在物体放大时,无论用户在什么位置,物体显示在用户的实现朝向的方向,即用户面前。

编写脚本,继承VRTK_InteractableObject类(steamVR插件VRTK中,用来控制手柄和物体交互的脚本)。

设置参数,例如移动后的高度,距离camera Rig位置面前的距离,移动后的scale大小,移动的时间等等。

枚举物体的状态,我设置了三种 idle moving placed

	//物体状态
	private enum State { IDLE, MOVING, PLACED }

移动的过程中moving,初始状态idle,移动后放大等效果为placed。

定义变量,开始时为IDLE状态,记录物体开始时的初始位置originPosition。Pivot差值。头显的数据等等。

	void Start(){
		state = State.IDLE;
		originPosition = transform.position;
		pivot = new Vector3 (0, Pivot, 0);
		scaleDelta = new Vector3 (Scale, Scale, Scale) / SpeedFrame;
		headset = VRTK_DeviceFinder.HeadsetTransform ();
	}

VRTK_DeviceFinder类:用于在场景中孕照左右手柄,头显,返回硬件编号,位置信息等。

除HeadsetTransform等,其他重要的API:

获取左右手柄的游戏物体

VRTK_DeviceFinder.GetControllerRightHand(); 
VRTK_DeviceFinder.GetControllerLiftHand();

获得左右手柄对应的硬件编号

VRTK_DeviceFinder.GetControllerIndex(rightHand)


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值