在场景中一个物体上挂上之前的说明书,实现当控制器碰到物体并扣下扳机展示说明书的功能。
我是利用VRTK中的VRTK_InteractableObject实现的。
具体可以看腾讯开发社区中的解释。
1
|
public
virtual
void
StartUsing()
|
·
Parameters
·
GameObject - 正在使用当前物体的游戏对象(例如手柄).
·
Returns
·
none
StartUsing方法会在物体开始被使用时被调用,它会
1、发送事件将传入的currentGrabbingObject作为参数,回调委托给InteractableObjectUsed的方法
2、设置当前使用物体的usingObject为传入的游戏对象
同样可以被子类重写,根据需要实现更多功能。
我们可以创建个新脚本,来重写这个函数,就可以实现功能。
book_interact.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using VRTK;
using VRTK.Highlighters;
public class Book_interect : VRTK_InteractableObject {
public GameObject book;
private enum State { ON,OFF }
private State state;
// Use this for initialization
void Start () {
state = State.OFF;
}
// Update is called once per frame
void Update () {
}
public override void StartUsing(GameObject currentUsingObject) {
base.StartUsing(currentUsingObject);
switch (state) {
case State.ON: {
book.gameObject.SetActive (true);
state = State.OFF;
}
break;
case State.OFF:
{
book.gameObject.SetActive (false);
state = State.ON;
}
break;
}
}
}
别忘了勾选脚本中的 Is Usable