bool isGrounded(CharacterControl control) { if (control.RIGIBODY.velocity.y > -0.001 && control.RIGIBODY.velocity.y <= 0f) { return(true); } if (control.RIGIBODY.velocity.y < 0f) { foreach (GameObject o in control.BottomSpheres) { Debug.DrawRay(o.transform.position, -Vector3.up * 0.7f, Color.green); RaycastHit hit; if (Physics.Raycast(o.transform.position, -Vector3.up, out hit, Distance)) { if (!control.RagdollParts.Contains(hit.collider) && !Ledge.isLedge(hit.collider.gameObject) && !Ledge.isLedgeChecker(hit.collider.gameObject) && !Ledge.isCharacter(hit.collider.gameObject)) { return(true); } } } } return(false); }
bool CheckFront(CharacterControl control) { foreach (GameObject o in control.FrontSpheres) { Debug.DrawRay(o.transform.position, control.transform.forward * 0.3f, Color.red); RaycastHit hit; if (Physics.Raycast(o.transform.position, control.transform.forward, out hit, BlockDistance)) { if (!control.RagdollParts.Contains(hit.collider)) { if (!isBodyPart(hit.collider) && !Ledge.isLedge(hit.collider.gameObject) && !Ledge.isLedgeChecker(hit.collider.gameObject)) { return(true); } } } } return(false); }