private void IdleOperateEnter() { //operaObject.BoxCollider.IsShake = true; EventHandRayTargetEnter.SendListener(operaObject.FeaturesObject.gameObject, InputHand.HandIndex); ShowLabel(); //显示高亮 // ShowHightLight(false); }
private void Start() { //EventCameraZoom.AddListener((float lerp) => //{ // Debug.Log("缩放:" + lerp); //}); //EventCameraRotate.AddListener((Vector3 lerp) => //{ // Debug.Log("旋转向量值:" + lerp); //}); //EventHandGrip.AddListener((int handIndex) => //{ // Debug.Log("握拳:" + handIndex); //}); //EventHandIdle.AddListener((int handIndex) => //{ // Debug.Log("释放:" + handIndex); //}); //Test(); //var result = IsContains(1, OperatePlatform.Mouse); //Debug.Log("result:" + result); EventHandGrabObject.AddListener((go, handIndex) => { //Debug.Log("抓取手:" + handIndex + " 物体:" + go); }); //EventHandRayTarget.AddListener((hit, handIndex) => //{ // Debug.Log("手:" + handIndex + " 射线点:" + hit.collider.gameObject); //}); EventHandRayTargetEnter.AddListener(key, (handIndex) => { //Debug.Log("手:" + handIndex + "物体移入:" + key); }); EventHandRayTargetExit.AddListener(key, (handIndex) => { //Debug.Log("手:" + handIndex + "物体移出:" + key); }); EventHandReleaseObject.AddListener((go, handIndex) => { //Debug.Log("释放手:" + handIndex + " 物体:" + go); }); }
/// <summary> /// 照射物体处理 /// </summary> /// <param name="hit"></param> void OnRayTarget(RaycastHit hit) { EventHandRayTarget.SendListener(hit, InputHand.HandIndex); switch (InputHand.HandStatus) { case MInputHandStatus.Idle: if (hit.collider == null) { OnNoRayTarget(); return; } if (operaObject != null && operaObject.gameObject == hit.collider.gameObject) { return; } if (operaObject != null) { //处理之前的 OnNoRayTarget(); } operaObject = hit.collider.GetComponent <OperaObject>(); EventHandRayTargetEnter.SendListener(operaObject.FeaturesObject.gameObject, InputHand.HandIndex); if (operaObject == null) { return; } ShowLabel(); //显示高亮 ShowHightLight(false); break; case MInputHandStatus.Grip: if (operaObject != null && operaObject.gameObject != hit.collider.gameObject) { return; } HideLabel(); InputHand.HandStatus = MInputHandStatus.Grab; //将该手状态设置为抓取状态 break; case MInputHandStatus.Grab: if (operaObject == null) { InputHand.HandStatus = MInputHandStatus.Idle; return; } ShowHightLight(true); HideLabel(); OperateObject = HandleGrab(operaObject.FeaturesObject.operaType); if (OperateObject != null) { OperateObject.HandStatus = MInputHandStatus.Grabing; EventHandGrabObject.SendListener(OperateObject.GrabObject, InputHand.HandIndex); EventHandGrabObjectKey.SendListener(OperateObject.GrabObject, InputHand.HandIndex); } InputHand.HandStatus = MInputHandStatus.Grabing; break; case MInputHandStatus.Invalid: if (OnInvalid != null) { OnInvalid(OperateObject, InputHand.HandIndex); } break; case MInputHandStatus.Error: if (OnError != null) { OnError(OperateObject, InputHand.HandIndex); } break; case MInputHandStatus.Grabing: //不可操作中,表示正在有物体进行操作,不可进行其他操作 if (OnGrabing != null) { OnGrabing(OperateObject, InputHand.HandIndex); } break; default: break; } }
void ontest() { gameObject.AddGrabObject(onGrab); gameObject.RemoveGrabObject(onGrab); gameObject.RemoveGrabObjectAll(); gameObject.AddReleaseObject(OnRelease); gameObject.RemoveReleaseObject(OnRelease); gameObject.RemoveReleaseObjectAll(); gameObject.AddRayTargetEnter(OnTargetEnter); gameObject.RemoveRayTargetEnter(OnTargetEnter); gameObject.RemoveRayTargetEnter(); gameObject.AddRayTargetExit(OnTargetExit); gameObject.RemoveRayTargetExit(); gameObject.RemoveRayTargetExit(OnTargetExit); EventHandRay.AddListener(onRay); EventHandRay.RemoveListener(onRay); EventHandRays.AddListener(OnRays); EventHandRays.RemoveListener(OnRays); EventHandStart.AddListener(onstart); EventHandStart.RemoveListener(onstart); EventHandStop.AddListener(onstop); EventHandStop.RemoveListener(onstop); EventHandUIRay.AddListener(onRay); EventHandUIRay.RemoveListener(onRay); EventCameraZoom.AddListener(onzoom); EventCameraZoom.RemoveListener(onzoom); EventCameraRotate.AddListener(onrotate); EventCameraRotate.RemoveListener(onrotate); EventHandGrabObject.AddListener(ongrabobject); EventHandGrabObject.RemoveListener(ongrabobject); EventHandReleaseObject.AddListener(onreleaseobject); EventHandReleaseObject.RemoveListener(onreleaseobject); EventHandGrabObjectKey.AddListener(gameObject, onGrab); EventHandGrabObjectKey.RemoveListener(gameObject, onGrab); EventHandReleaseObjectKey.AddListener(gameObject, OnRelease); EventHandReleaseObjectKey.RemoveListener(gameObject, OnRelease); EventHandRayTarget.AddListener(onraytarget); EventHandRayTarget.RemoveListener(onraytarget); EventHandRayTargetEnter.AddListener(gameObject, OnTargetEnter); EventHandRayTargetEnter.RemoveListener(gameObject, OnTargetEnter); EventHandRayTargetExit.AddListener(gameObject, OnTargetExit); EventHandRayTargetExit.RemoveListener(gameObject, OnTargetExit); EventHandUIRayEnter.AddListener(gameObject, onuienter); EventHandUIRayEnter.RemoveListener(gameObject, onuienter); EventHandUIRayExit.AddListener(gameObject, onuiexit); EventHandUIRayExit.RemoveListener(gameObject, onuiexit); EventHandUIRay.AddListener(onRay); EventHandUIRay.RemoveListener(onRay); }
private void GrabOperateEnter() { ShowHightLight(true); //operaObject.BoxCollider.IsShake = true; EventHandRayTargetEnter.SendListener(operaObject.FeaturesObject.gameObject, InputHand.HandIndex); }