コード例 #1
0
        //Box vs Circle
        public override bool Collides(CircleCollider circle, ref Collision collisionInfo)
        {
            float deltaX = circle.Position.X - Math.Max(
                Position.X - halfWidth,
                Math.Min(circle.Position.X, Position.X + halfWidth)
                );
            float deltaY = circle.Position.Y - Math.Max(
                Position.Y - halfHeight,
                Math.Min(circle.Position.Y, Position.Y + halfHeight)
                );

            // RAD(x2 + y2) < r
            // x2 + y2 < r2
            return((deltaX * deltaX + deltaY * deltaY) < (circle.Radius * circle.Radius));
        }
コード例 #2
0
 public override bool Collides(CircleCollider circle, ref Collision collisionInfo)
 {
     return(circle.Collides(BoundingCollider, ref collisionInfo) && InnerCollidersCollide(circle, ref collisionInfo));
 }
コード例 #3
0
 public abstract bool Collides(CircleCollider circle, ref Collision collisionInfo);
コード例 #4
0
        //Circle vs Circle
        public override bool Collides(CircleCollider other, ref Collision collisionInfo)
        {
            Vector2 dist = other.Position - Position;

            return(dist.LengthSquared <= Math.Pow(Radius + other.Radius, 2));
        }