-
Couldn't load subscription status.
- Fork 360
Description
Enhancement request:
What should be added/changed?
tl;dr: Add rotation angle offset support for sprites
This would take the form of angle_offset and radians_offset to match the respective attributes of Sprite. To avoid conflict between the two settings, the default values could be None, raising an exception if both receive non-None values.
Different Sprite subclasses could also have different default values to make use of sprites as they're found.
The implementation could be one of the following:
- Extra parameters for
load_textureorTexture, with pass-through versions of the args in Sprite's constructor - Class variable
- Instance variable set from constructor argument + property
- Mix of the above
Each option seems to potential have advantages as well as disadvantages.
What would it help with?
tl;dr: Increase development speed
Although flipped_horizontally and flipped_vertically are supported as arguments to Sprite, these don't allow for rotation that would be useful for non-symmetrical sprites.
Adding rotation support would:
- Be especially useful during game jams
- Allow users to focus on learning python instead of image editors
- Allow saving RAM when developing on underpowered hardware often used for education
- Make
Sprite.look_ateven more useful for beginners (Feature request: New method in the Sprite class to rotate it to face a given Point #1091)
User Story Example
Alex is a student working on a top-down game on a somewhat underpowered computer. He finds a good image of a vehicle, but it points the wrong way when loaded into arcade. Alex passes -90 to angle_offset to immediately make the image load correctly. No time is wasted on waiting for an image editor to load.
Possible advantages of different implementations
| Option | Advantage |
|---|---|
| Extra parameters to load_texture or Texture, mirrored in Sprite's constructor | Improves texture loading flexibility in general |
| Class variable | Allows introducing users to the idea of a class variable in Python |
| Instance variables | Could make creating some interesting game behavior easier |
| A mix | Flexibility |
Class variables could be confusing to beginners, so they might not be the best default interface for this feature.