//判断大拇指运动轨迹是否向手掌 internal bool IsMoveTowardHand() { Hi5_Position_Record[] records = mRecord.GetRecord().ToArray(); if (records.Length == Hi5_Interaction_Const.ObjectPinchRecordPositionCount) { Hi5_Position_Record pre = records[Hi5_Interaction_Const.ObjectPinchRecordPositionCount - 3]; Hi5_Position_Record back = records[Hi5_Interaction_Const.ObjectPinchRecordPositionCount - 1]; Vector3 temp = back.position - pre.position; //Hi5_Hand_Collider_Visible_Finger collider = GetChildCollider(Hi5_Glove_Finger_bone_Type.EFour); //Vector3 planeNormal = (-collider.transform.parent.forward).normalized; //Vector3 temp1 = planeNormal * (Vector3.Dot(planeNormal, temp)); Vector3 temp2 = mHand.palm.transform.position - transform.position; float dotValue = Vector3.Dot(temp, temp2); if (dotValue > 0.0f) { return(true); } else { return(false); } } else { return(true); } }
private void RecordPosition(float deltaTime) { if (mQueuePositionRecord.Count > (Hi5_Interaction_Const.ObjectPinchRecordPostionCount - 1)) { mQueuePositionRecord.Dequeue(); } Hi5_Position_Record record = new Hi5_Position_Record(transform.position, prePosiotnRecord, deltaTime); mQueuePositionRecord.Enqueue(record); prePosiotnRecord = transform.position; }