// c===============3 // c===============3 // c===============3 void CalculateDistance() { UpperCentre = Utilities_Class.Centre3D(LupperLeg.position, RupperLeg.position); if (IKControl.leftFootIK && IKControl.rightFootIK) { //HCentre = Utilities_Class.Centre3D(Lhand.position, RHand.position); HCentre = Utilities_Class.Centre3D(IKControl.leftFootPos, IKControl.rightFootPos); c = Utilities_Class.distance3D(HCentre, UpperCentre); } else if (IKControl.leftFootIK && !IKControl.rightFootIK) { // HCentre = Lhand.position; HCentre = IKControl.leftFootPos; c = Utilities_Class.distance3D(HCentre, LupperLeg.position); } else if (!IKControl.leftFootIK && IKControl.rightFootIK) { //HCentre = RHand.position; HCentre = IKControl.rightFootPos; c = Utilities_Class.distance3D(HCentre, LupperLeg.position); } else { HCentre = Utilities_Class.Centre3D(LFoot.position, RFoot.position); c = Utilities_Class.distance3D(HCentre, UpperCentre); } }
public void GroundedCast() { RaycastHit groundRay; RaycastHit FwdgroundRay; RaycastHit BckgroundRay; Debug.DrawRay(CastPos, -transform.up * distToGround, Color.green); if (Physics.Raycast(CastPos, -transform.up, out groundRay, 100, ignoreMask)) { groundSlope = angleConvert(Mathf.RoundToInt(SlopAngle((ParrellSurfaceVector(angleX, angleY, angleZ, groundRay.normal))))); Debug.DrawRay(groundRay.point, (ParrellSurfaceVector(angleX, angleY, angleZ, groundRay.normal)), Color.cyan); float dist = Utilities_Class.distance3D(transform.position, groundRay.point); if (dist < .1f) { groundPos = groundRay.point; isBlw = CheckSlope(groundSlope); } else { isBlw = false; if (Physics.Raycast(CastPos - offset, -transform.forward, out BckgroundRay, bckDst, ignoreMask)) { groundSlope = angleConvert(Mathf.RoundToInt(SlopAngle((ParrellSurfaceVector(angleX, angleY, angleZ, BckgroundRay.normal))))); groundPos = groundRay.point; Debug.DrawRay(BckgroundRay.point, (ParrellSurfaceVector(angleX, angleY, angleZ, BckgroundRay.normal)), Color.magenta); Debug.DrawRay(CastPos - offset, -transform.forward * bckDst, Color.red); isBck = CheckSlope(groundSlope); } else { Debug.DrawRay(CastPos - offset, -transform.forward * bckDst, Color.blue); isBck = false; } if (Physics.Raycast(CastPos - offset, transform.forward, out FwdgroundRay, fwdDst, ignoreMask)) { groundSlope = angleConvert(Mathf.RoundToInt(SlopAngle((ParrellSurfaceVector(angleX, angleY, angleZ, FwdgroundRay.normal))))); groundPos = groundRay.point; Debug.DrawRay(FwdgroundRay.point, (ParrellSurfaceVector(angleX, angleY, angleZ, FwdgroundRay.normal)), Color.magenta); Debug.DrawRay(CastPos - offset, transform.forward * fwdDst, Color.yellow); isFwD = CheckSlope(groundSlope); } else { Debug.DrawRay(CastPos - offset, transform.forward * fwdDst, Color.magenta); isFwD = false; } } groundPos = transform.position; } }
void SortActiveObjects() { for (int i = 0; i < activeObject.Count; i++) { activeObject.Sort(delegate(GameObject a, GameObject b) { return((Utilities_Class.distance3D(this.transform.position, activeObject[i].transform.position)). CompareTo(Utilities_Class.distance3D(this.transform.position, activeObject[(i + 1) % activeObject.Count].transform.position))); }); } }
// c===============3 // c===============3 // c===============3 void CalculateArmLengths() { float r1 = Utilities_Class.distance3D(RupperLeg.position, RlowerLeg.position); float r2 = Utilities_Class.distance3D(RlowerLeg.position, RFoot.position); float rfinal = r1 + r2; r = rfinal; float l1 = Utilities_Class.distance3D(LupperLeg.position, LlowerLeg.position); float l2 = Utilities_Class.distance3D(LlowerLeg.position, LFoot.position); float lfinal = l1 + l2; l = lfinal; }
Vector3 UpdatePosition() { float dx = P_Arm_Distance.HCentre.x - P_Arm_Distance.UpperCentre.x; float dy = P_Arm_Distance.HCentre.y - P_Arm_Distance.UpperCentre.y; float dz = P_Arm_Distance.HCentre.z - P_Arm_Distance.UpperCentre.z; float dist = Utilities_Class.distance3D(P_Arm_Distance.UpperCentre, P_Arm_Distance.HCentre); float diff = (P_Arm_Distance.c + grabLengthDistance) - dist; float percent = (diff / dist) / 2; float offsetX = dx * percent; float offsetY = dy * percent; float offsetZ = dz * percent; return(new Vector3(offsetX, offsetY, offsetZ)); }
void ManageNearestObject() { Bounds bounds = activeObject[activeObject.Count - 1].GetComponent <MeshRenderer>().bounds; distance = Utilities_Class.distance3D(transform.position, activeObject[activeObject.Count - 1].transform.position); if (interActiveDistance >= Utilities_Class.distance3D(transform.position, activeObject[activeObject.Count - 1].transform.position) && transform.root.position.y <= activeObject[activeObject.Count - 1].transform.position.y + bounds.extents.y) { nearestObj = activeObject[activeObject.Count - 1]; nearestObjBounds = bounds; } else { nearestObj = null; } }