Example #1
0
    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);
        }
    }
Example #3
0
    void DrawShweepGizmo()
    {
        Vector3 start = transform.position;
        Vector3 end   = start + (transform.forward * ShweepData.MaxDistance);

        DebugExtension.DebugCapsule(start, end, ShweepData.GizmoColor, ShweepData.Radius);
    }
Example #4
0
    /// <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);
    }
Example #5
0
 // 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);
 }
Example #6
0
    ///*
    // 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);
        }
    }
Example #7
0
    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);
    }
Example #8
0
    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));
    }
Example #9
0
 private void DrawDebugCapsule(Vector3 bottom, Vector3 top, float radius)
 {
     DebugExtension.DebugCapsule(bottom, top, Color.red, radius, 1);
 }
Example #10
0
 private void OnDrawGizmosSelected()
 {
     DebugExtension.DebugCapsule(transform.position, transform.position - new Vector3(0, distGroundFromCenter, 0), groundCheckRadious);
 }