public override bool isColliding(MyCollider _other)
    {
        if (_other == null)
        {
            return(false);
        }
        if (_other is MyBox2DCollider)
        {
            MyBox2DCollider other = (MyBox2DCollider)_other;
            if (this.minPosition.x > other.minPosition.x && this.minPosition.x < other.maxPosition.x && this.minPosition.y > other.minPosition.y && this.minPosition.y < other.maxPosition.y)
            {
                return(true);
            }
            if (this.maxPosition.x > other.minPosition.x && this.maxPosition.x < other.maxPosition.x && this.maxPosition.y > other.minPosition.y && this.maxPosition.x < other.maxPosition.x)
            {
                return(true);
            }
            return(false);
        }
        else if (_other is MyCircleCollider)
        {
            MyCircleCollider other        = (MyCircleCollider)_other;
            Vector3          closestPoint = GetClosestPoint(other.Position);
            float            distance     = Vector3.SqrMagnitude(closestPoint - other.Position);

            return(distance < (other.Radius * other.Radius));
        }
        return(base.isColliding(_other));
    }
Exemple #2
0
    public override bool isColliding(MyCollider _other)
    {
        if (_other == null)
        {
            return(false);
        }
        if (_other is MyCircleCollider)
        {
            MyCircleCollider other    = (MyCircleCollider)_other;
            float            distance = (other.Position - this.Position).sqrMagnitude;
            float            radii    = other.m_radius * other.transform.lossyScale.x + this.m_radius * other.transform.lossyScale.x;

            return(distance < (radii * radii));
        }
        else if (_other is MyBox2DCollider)
        {
            MyBox2DCollider other        = (MyBox2DCollider)_other;
            Vector3         closestPoint = other.GetClosestPoint(Position);
            float           distance     = Vector3.SqrMagnitude(closestPoint - Position);

            return(distance < (Radius * Radius));
        }
        return(base.isColliding(_other));
    }