KOTerra / Strafe-Overdead

BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

elevation system #31

Open KOTerra opened 5 months ago

KOTerra commented 5 months ago

adding a forced persepective z axis so that entities can travel the world on slopes, jump on various elevation levels of terrain , walk behind elevated terrain

KOTerra commented 5 months ago

elevation level 0 collisions (positioned lower on side slopes so enities can move behind them, what can be seen as their footprint) Image .

elevation level 0 to 1 sensors ( when interacting with entities the entity's elevation level is changed depending on the direction it moves towards i.e. when entity bodies intersect and move on them) notice the notches at extremities, these are there to update the elevation level as soon as they are interacted with so collisions stop with the base and start taking effect with the top collisions. They aslo push the entity slightly above and slow its speed to give the illusion of climbing slopes Image . elevation level 1 collisions (the next level s collisions which interact with the entity as it climbs the elevations and after that. they are the same as normal walls of level 1 elevation basically) Image . when going up, elevation level changes as soon as interacted with the entity so top collisions can start when going down the elevation changes after the interaction stops so the base collisions don't intervine

stuff will be set with object and layer properties Image

Image

Image

KOTerra commented 5 months ago

we also need to draw the layers independently in a way to apply render sorting on them based on the footprint Y axis and elevation level. so probably an elevation needs a footprint reference. could be refrenced from the object properties

Image

KOTerra commented 5 months ago

for side slopes the footprint corresponding tiles have to be on the ground layer image

KOTerra commented 5 months ago

Changing the terminology: Elevation is the actual height on the z axis of an Entity, a map object or layer ElevationAgent is anything that operates and changes the elevation of any of those listed above so a slope is an agent

KOTerra commented 5 months ago

If two bodies are still in contact when the elevation of one is changed, the contact has to stop and begin again for changes in filtering to take effect ex. player footprint touches a wall they have the same elevation, the elevation of the player changes, it still collides with the wall and has to move back and begin contact again to not collide anymore