CodingLand/pkg/internal/land/object_collision.go
2024-07-18 17:46:36 +08:00

29 lines
736 B
Go

package land
type PositionedObject interface {
GetPosition() Vector2D
GetSize() Vector2D
}
func IsOverlapWithPoint(obj PositionedObject, point Vector2D) bool {
return point.X >= obj.GetPosition().X && point.X <= obj.GetPosition().X+obj.GetSize().X &&
point.Y >= obj.GetPosition().Y && point.Y <= obj.GetPosition().Y+obj.GetSize().Y
}
type CollidableObject interface {
GetPosition() Vector2D
GetSize() Vector2D
OnCollide(other CollidableObject)
}
func checkCollisionBetweenObject(a, b CollidableObject) bool {
aPos := a.GetPosition()
aSize := a.GetSize()
bPos := b.GetPosition()
bSize := b.GetSize()
return aPos.X < bPos.X+bSize.X &&
aPos.X+aSize.X > bPos.X &&
aPos.Y < bPos.Y+bSize.Y &&
aPos.Y+aSize.Y > bPos.Y
}