【发布时间】:2019-02-05 08:01:16
【问题描述】:
我正在创建一个 vr 项目,我在场景中有一个简单的立方体,上面有一个盒子碰撞器,上面有触发器,现在我想要的是,当我的 vr 手进入那个立方体的触发器时,我的 vr 的抓取动画手应该播放,但是当我将手伸入立方体的触发器时,什么也没有发生,然后出于测试目的,我调试。记录一条消息,无论它是否检测到它都很好,它正在检测我的手何时进入以及何时离开,但动画是不在这里玩是我的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
公共类 VRHandsController : MonoBehaviour {
public VRTK.VRTK_ControllerEvents vrcontroller;
public VRTK.VRTK_InteractGrab vrtkgrab;
Animator anim;
// Start is called before the first frame update
void Start()
{
anim = GetComponent<Animator>();
//
anim.SetBool("indicate", false);
anim.SetBool("grab", false);
anim.SetBool("idle", true);
//anim.SetBool("isGrabbing", false);
}
// Update is called once per frame
void Update()
{
if (vrcontroller.touchpadPressed)
{
anim.SetBool("indicate", true);
anim.SetBool("grab", false);
anim.SetBool("idle", false);
//anim.SetBool("isGrabbing", true);
}
else if (vrtkgrab.IsGrabButtonPressed())
{
anim.SetBool("indicate", false);
anim.SetBool("grab", true);
anim.SetBool("idle", false);
}
else if (vrcontroller.triggerClicked)
{
anim.SetBool("indicate", true);
anim.SetBool("grab", false);
anim.SetBool("idle", false);
}
else
{
anim.SetBool("indicate", false);
anim.SetBool("grab", false);
anim.SetBool("idle", true);
//a///nim.SetBool("isGrabbing", false);
}
}
private void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag == "object")
{
anim.SetBool("indicate", false);
anim.SetBool("grab", true);
anim.SetBool("idle", false);
Debug.Log("colliding>>>>>");
}
}
private void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "object")
{
anim.SetBool("indicate", false);
anim.SetBool("grab", true);
anim.SetBool("idle", false);
Debug.Log("colliding>>>>>");
}
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == "object")
{
anim.SetBool("indicate", false);
anim.SetBool("grab", false);
anim.SetBool("idle", true);
Debug.Log("leaving trigger");
}
}
}
【问题讨论】:
-
很难说没有设置你的 stateMachine 及其所有转换 ....
标签: c# unity3d virtual-reality