Platformer
The Platformer behavior makes the associated entity perform a simple platform movement (with gravity, etc). Used mostly by NPCs and baddies, this behavior is supposed to be lightweight for the CPU and is not designed to support 360°-physics.
Important: for best results, the hot spot of the entity should be placed on its feet.
Example
//
// In the example below, we create a dummy that
// walks around the level (left and right)
//
using SurgeEngine.Actor;
using SurgeEngine.Behaviors.Enemy;
using SurgeEngine.Behaviors.Platformer;
object "My Baddie" is "entity", "enemy"
{
actor = Actor("My Baddie"); // give it graphics
enemy = Enemy(); // make it behave like a baddie
platformer = Platformer(); // give it a platform movement
state "main"
{
platformer.speed = 60; // 60 pixels per second
platformer.walk(); // make it walk
}
}
Factory
Behaviors.Platformer
Platformer()
Spawns a Platformer.
Returns
The behavior object.
Properties
speed
speed
: number.
Walking speed, in pixels per second.
jumpSpeed
jumpSpeed
: number.
Jump speed, in pixels per second. The higher the value, the more intense the jump.
gravityMultiplier
gravityMultiplier
: number.
A multiplier used to modify how the Platformer is affected by gravity. When set to 1.0, the Platformer will subject to the default acceleration of gravity. When set to 2.0 (0.5), the Platformer will be subject to twice (half) the default gravity, and so on. Zero means no gravity. Defaults to 1.0.
Available since: Open Surge 0.6.0
direction
direction
: number, read-only.
Direction will be +1 if the platformer is facing right or -1 is it's facing left.
walking
walking
: boolean, read-only.
Is the platformer walking?
walkingLeft
walkingLeft
: boolean, read-only.
Is the platformer walking to the left?
walkingRight
walkingRight
: boolean, read-only.
Is the platformer walking to the right?
midair
midair
: boolean, read-only.
Is the platformer midair?
falling
falling
: boolean, read-only.
Is the platformer falling down?
wall
wall
: boolean, read-only.
Is the platformer touching a wall?
leftWall
leftWall
: boolean, read-only.
Is the platformer touching a wall on its left side?
rightWall
rightWall
: boolean, read-only.
Is the platformer touching a wall on its right side?
leftLedge
leftLedge
: boolean, read-only.
Is the platformer standing on a ledge located on its left side?
rightLedge
rightLedge
: boolean, read-only.
Is the platformer standing on a ledge located on its right side?
Functions
walk
walk()
Enables automatic walking. The platformer will walk left and right automatically.
Returns
Returns the platformer itself.
walkLeft
walkLeft()
Makes the platformer walk to the left.
Returns
Returns the platformer itself.
walkRight
walkRight()
Makes the platformer walk to the right.
Returns
Returns the platformer itself.
stop
stop()
Makes the platformer stop walking.
Returns
Returns the platformer itself.
jump
jump()
Makes the platformer jump. It will only jump if it's touching the ground.
Returns
Returns the platformer itself.
Example
//
// In the example below, we create a jumping
// dummy that walks left and right
//
using SurgeEngine.Actor;
using SurgeEngine.Behaviors.Enemy;
using SurgeEngine.Behaviors.Platformer;
object "My Jumping Baddie" is "entity", "enemy"
{
actor = Actor("My Jumping Baddie"); // handles the graphics
enemy = Enemy(); // make it behave like a baddie
platformer = Platformer().walk(); // make it walk
state "main"
{
platformer.speed = 60; // 60 pixels per second
if(timeout(3.0)) // jump every 3 seconds
state = "jump";
}
state "jump"
{
platformer.jump();
state = "main";
}
}
forceJump
forceJump(speed)
Makes the platformer jump, regardless if it's touching the ground or not.
Arguments
speed
: number. Jump speed in pixels per second.
Returns
Returns the platformer itself.
setSensorBox
setSensorBox(width, height)
The platformer spawns invisible sensors to detect collisions. Together, these sensors are thought to form a box which size is related to the size of the individual sensors. This function sets the size of this box. That size should be compatible with the size of the sprite and a size too small may break the platformer. The size of the sensor box is computed automatically, so normally you don't need to modify it.
Arguments
width
: number. The width of the box, in pixels.height
: number. The height of the box, in pixels.
Returns
Returns the platformer itself.
showSensors
showSensors()
Displays the internal sensors of the platformer, which are invisible by default. For debugging only.
Available since: Open Surge 0.5.2
Returns
Returns the platformer itself.
Example
using SurgeEngine.Actor;
using SurgeEngine.Behaviors.Platformer;
object "Testing Stuff" is "entity"
{
actor = Actor("Testing Stuff");
platformer = Platformer().showSensors();
// ...
}
hideSensors
hideSensors()
Hides the internal sensors of the platformer. This is the default.
Available since: Open Surge 0.5.2
Returns
Returns the platformer itself.