lordmauve / pgzero

A zero-boilerplate games programming framework for Python 3, based on Pygame.
https://pygame-zero.readthedocs.io/
GNU Lesser General Public License v3.0
527 stars 191 forks source link

add some collide functions #281

Open yansnow78 opened 2 years ago

yansnow78 commented 2 years ago

proposal based on pgzhelper add collide class to do perform plenty of collision test add some collide functions in class Actor using this collide class:

    def mask_collidepoint(self, pt: _Coordinate):
    def mask_collide(self, actor):
    def mask_collidelist(self, actors):
    def mask_collidelistall(self, actors):

    def circle_collidepoints(self, points: Sequence[_Coordinate],
                             radius: float = None) -> int:
    def circle_collidepoint(self, pt: _Coordinate, radius: float = None) -> bool:
    def circle_collidecircle(self, target: Union[Actor, _Coordinate],
                             radius: float = None, target_radius: float = None) -> bool:
    def circle_collideobb(self, target: Actor, radius: float = None) -> bool:

    def obb_collidepoint(self, pt: _Coordinate) -> bool:
    def obb_colliderect(self, target: Union[Actor, _CanBeRect]):
    def obb_collideobb(self, target: Union[Actor, _CanBeObb]):

compare to pgzhelper, some functions have been renamed, feel free to tell me which function name is the best: _collidepointpixel to _maskcollidepoint _collidepixel to _maskcollide _collidelistpixel to _maskcollidelist _collidelistallpixel to _maskcollidelistall