-
Notifications
You must be signed in to change notification settings - Fork 0
Moving Platform
The moving platform is an entity that works similarly to the flying enemy, except it also includes a progress property and gets landed on by the player as opposed to being killed or dealing damage.
Connecting Systems:
- Game Manager
- Property Editor
- Entity Manager
- Resource System (MovingPlatform .tres files)
Subsystems:
- None
List of known bugs. Be descriptive but keep it brief!
- Small amount of jitter once it changes direction
Moving Platform Entity:
- Flying Speed: Controls how fast the moving platform travels between points. Higher values = faster movement.
- Point B Offset: Defines the second movement point relative to the spawn position. X controls horizontal distance, Y controls vertical distance. Supports diagonal movement (e.g., Offset (256, 0) -> moves right, Offset (0, -256) -> moves up, Offset (256, 256) -> moves diagonally).
- Moves in a straight line between Point A (spawn position) and Point B (Point A + Offset).
- Automatically switches direction when reaching a point.
- Uses normalized direction vector for smooth motion.
- Uses direct velocity-based movement (no pathfinding).
- Ignores gravity.
- Can't collide with level geometry.
- Other entities can stand on it.
propertyFile: Resource = Stores the currently assigned MovingPlatform resource.
pointA: Vector2 = Spawn position (set when platform is placed).
pointB: Vector2 = Calculated endpoint based on offset.
targetPoint: Vector2 = Current movement destination.
speed: float = Movement speed of the platform.
progress: float = Starting progress of the moving platform
easing : bool = If true, the platform slows down when close to either endpoint.
-
func assign_script(id: String, position: Vector2i) -> void: Assigns a MovingPlatform resource to the entity based on a generated ID. Loads the correct .tres file from disk, assigns it to propertyFile, and sets the entity's identity in the editor system. -
func apply_script(file: Resource) -> void: Applies a MovingPlatform resource to the entity instance. Reads stored data from the resource, updates movement behavior based on saved values, and recalculates patrol path (Point A and Point B). Does NOT reposition the entity in world space; assumes enemy is already placed correctly by the editor.
- Platform spawns at Point A (editor placement)
- Point B is calculated using offset:
Point B = Point A + Offset - Platform moves toward target point using normalized direction
- When close enough to target: switches target to the opposite point and repeats
- Editor places platform
- assign_script()
- Resource created/saved (.tres)
- apply_script() on load
- Point A set = global position
- Point B calculated = A + offset
- Platform begins patrol movement
Future Work:
- Add support for variable movement patterns (e.g., sine wave, circular)
Risks:
- None
- None
Resources
Known Issues
Future Work
Globals
Managers
- Main Menu Manager
- Master Manager
- Camera Manager
- Hotkey Manager
- Import Export Manager
- Audio Manager
- Animation Manager
- PopUp Manager
UI
Managers
- Editor Manager
- Tile Manager
- Entity Manager
- Icon Manager
- Preview Manager
- Tool Manager
- Asset Manager
- Custom Cursor Manager
Tiles & Entities
- Grid Lines
- Preview Line
- Tiles & Entities
- Enemies
- Patrolling Enemy
- Flying Enemy
- Shooting Enemy
- Stationary Enemy
- Moving Platform
- Property Editing
Asset Swapping
UI
Managers
Player