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)); }
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)); }