void drawReceptionAngle(Vector3 position, ricochetMode mode, float length) { Vector3 angleBundle = getAngleBundle(mode); Color drawColor = getDrawingColor(mode); Vector3 pathVector = Vector3.zero; //Receiving from right pathVector = Quaternion.AngleAxis(angleBundle.x, Vector3.up) * Vector3.forward; DebugExtension.DebugCapsule(position, position + pathVector * length, drawColor, _ricochetObjectRadius); //Receiving from left pathVector = Quaternion.AngleAxis(angleBundle.x, Vector3.down) * Vector3.forward; DebugExtension.DebugCapsule(position, position + pathVector * length, drawColor, _ricochetObjectRadius); //Receiving from up pathVector = Quaternion.AngleAxis(angleBundle.y, Vector3.left) * Vector3.forward; DebugExtension.DebugCapsule(position, position + pathVector * length, drawColor, _ricochetObjectRadius); if (angleBundle.z != 0) { //Receiving from down pathVector = Quaternion.AngleAxis(angleBundle.z, Vector3.right) * Vector3.forward; DebugExtension.DebugCapsule(position, position + pathVector * length, drawColor, _ricochetObjectRadius); } }
void DetectCollisions() { RaycastHit hit; Vector3 p1 = transform.position + Vector3.up * bottomOfCharacter; Vector3 p2 = p1 + Vector3.up * playerMovement.charController.height; for (int i = 0; i < 360; i += 18) { if (Physics.CapsuleCast(p1, p2, 0, new Vector3(Mathf.Cos(i), 0, Mathf.Sin(i)), out hit, playerMovement.charController.radius + collisionDetectionDistance)) { PlayerModel tempPlay = null; tempPlay = hit.collider.gameObject.GetComponentInParent <PlayerModel>(); if (tempPlay == null) { Vector3 temp = (hit.point - transform.position).normalized; temp.y = 0; playerMovement.charController.Move((temp) * (collisionDetectionDistance - hit.distance)); if (hit.collider.gameObject.tag == "Hazard" && isHolding) { if (!playerPowerups.strengthPower) { Fail(); } } } } DebugExtension.DebugCapsule(p1 + new Vector3(Mathf.Cos(i), 0, Mathf.Sin(i)), p2 + new Vector3(Mathf.Cos(i), 0, Mathf.Sin(i)), 0); } }
void DrawShweepGizmo() { Vector3 start = transform.position; Vector3 end = start + (transform.forward * ShweepData.MaxDistance); DebugExtension.DebugCapsule(start, end, ShweepData.GizmoColor, ShweepData.Radius); }
/// <summary> /// /// </summary> /// <param name="position"></param> /// <param name="collider"></param> /// <returns>point1 is top of capsule, point2 is bottom</returns> public static (Vector3 point1, Vector3 point2) CalculateCapsuleColliderPoints(Vector3 position, CapsuleCollider collider) { Vector3 point = Vector3.up * (collider.height - collider.radius * 2); Vector3 point1 = (position + collider.center) + point; Vector3 point2 = (position + collider.center) - point; DebugExtension.DebugCapsule(point1, point2, Color.cyan, collider.radius, 5f, false); return(point1, point2); }
// Update is called once per frame void Update() { DebugExtension.DebugPoint(debugPoint_Position, debugPoint_Color, debugPoint_Scale); DebugExtension.DebugBounds(new Bounds(new Vector3(10, 0, 0), debugBounds_Size), debugBounds_Color); DebugExtension.DebugCircle(new Vector3(20, 0, 0), debugCircle_Up, debugCircle_Color, debugCircle_Radius); DebugExtension.DebugWireSphere(new Vector3(30, 0, 0), debugWireSphere_Color, debugWireSphere_Radius); DebugExtension.DebugCylinder(new Vector3(40, 0, 0), debugCylinder_End, debugCylinder_Color, debugCylinder_Radius); DebugExtension.DebugCone(new Vector3(50, 0, 0), debugCone_Direction, debugCone_Color, debugCone_Angle); DebugExtension.DebugArrow(new Vector3(60, 0, 0), debugArrow_Direction, debugArrow_Color); DebugExtension.DebugCapsule(new Vector3(70, 0, 0), debugCapsule_End, debugCapsule_Color, debugCapsule_Radius); }
///* // Update is called once per frame void Update() { var trans = this.transform; var radius = edgeCollider2D.edgeRadius; var points = edgeCollider2D.points; for (int i = 0; i < edgeCollider2D.pointCount - 1; i++) { DebugExtension.DebugCapsule(trans.TransformPoint(points[i]), trans.TransformPoint(points[i + 1]), Color.green, radius, 0f, false); } }
public static bool SpaceUpSphere(GameObject gameObject, ColliderProperties properties) { Vector3 start = Helper.GetCenter(gameObject); Vector3 end = start + new Vector3(0, properties.Height - start.y, 0); int layerMask = Physics.AllLayers & ~(1 << LayerMask.NameToLayer("Player")); layerMask &= ~(Physics.IgnoreRaycastLayer); DebugExtension.DebugCapsule(start, end, Color.red, 0.3f); if (Physics.CheckCapsule(start, end, 0.3f, layerMask)) { return(false); } return(true); }
private Collider[] CapsuleCollisionCheck(Transform colliderGameObject, CapsuleCollider collider) { Vector3 capsuleDirection; if (collider.direction == 0) { capsuleDirection = colliderGameObject.right; } else if (collider.direction == 1) { capsuleDirection = colliderGameObject.transform.up; } else { capsuleDirection = colliderGameObject.forward; } // Debug capsule direction // Debug.DrawLine(colliderGameObject.position, colliderGameObject.position + capsuleDirection * 10f, Color.red, 3f); float height = collider.radius > collider.height ? collider.radius * 2f : collider.height; Vector3 center = colliderGameObject.TransformPoint(collider.center); // Debug center // DebugExtension.DebugPoint(center, Color.red, 1f, 1f); Vector3 capsuleBottomPoint = center - capsuleDirection * (height * 0.5f - collider.radius); Vector3 capsuleTopPoint = center + capsuleDirection * (height * 0.5f - collider.radius); // Debug bottom and top point // DebugExtension.DebugPoint(capsuleBottomPoint, Color.green); // DebugExtension.DebugPoint(capsuleTopPoint, Color.red); // Debug capsule if (_debugCollider) { // Debug capsule DebugExtension.DebugCapsule(capsuleBottomPoint - capsuleDirection * collider.radius, capsuleTopPoint + capsuleDirection * collider.radius, Color.black, collider.radius, 3f); } return(Physics.OverlapCapsule(capsuleBottomPoint, capsuleTopPoint, collider.radius, _hitMask, QueryTriggerInteraction.Collide)); }
private void DrawDebugCapsule(Vector3 bottom, Vector3 top, float radius) { DebugExtension.DebugCapsule(bottom, top, Color.red, radius, 1); }
private void OnDrawGizmosSelected() { DebugExtension.DebugCapsule(transform.position, transform.position - new Vector3(0, distGroundFromCenter, 0), groundCheckRadious); }