Noah Petherbridge
d14eaf7df2
* The F4 key to draw collision boxes works reliably again: it draws the player's hitbox in world-space using the canvas.DrawStrokes() function, rather than in screen-space so it follows the player reliably. * The F4 key also draws hitboxes for ALL other actors in the level: buttons, enemies, doors, etc. * The level geometry collision function is updated to respect a doodad's declared Hitbox from their script, which may result in a smaller box than their raw Canvas size. The result is tighter collision between doodads, and Boy's sprite is rather narrow for its square Canvas so collision on rightward geometry is tighter for the player character. * Collision checks between actors also respect the actor's declared hitboxes now, allowing for Boy to get even closer to a locked door before being blocked.
38 lines
909 B
JavaScript
38 lines
909 B
JavaScript
function main() {
|
|
var playerSpeed = 12;
|
|
var gravity = 4;
|
|
var Vx = Vy = 0;
|
|
|
|
var animating = false;
|
|
var animStart = animEnd = 0;
|
|
var animFrame = animStart;
|
|
|
|
Self.SetMobile(true);
|
|
Self.SetGravity(true);
|
|
Self.SetHitbox(0, 0, 32, 52);
|
|
Self.AddAnimation("walk-left", 200, ["stand-left", "walk-left-1", "walk-left-2", "walk-left-3", "walk-left-2", "walk-left-1"]);
|
|
Self.AddAnimation("walk-right", 200, ["stand-right", "walk-right-1", "walk-right-2", "walk-right-3", "walk-right-2", "walk-right-1"]);
|
|
|
|
Events.OnKeypress(function(ev) {
|
|
Vx = 0;
|
|
Vy = 0;
|
|
|
|
if (ev.Right) {
|
|
if (!Self.IsAnimating()) {
|
|
Self.PlayAnimation("walk-right", null);
|
|
}
|
|
Vx = playerSpeed;
|
|
} else if (ev.Left) {
|
|
if (!Self.IsAnimating()) {
|
|
Self.PlayAnimation("walk-left", null);
|
|
}
|
|
Vx = -playerSpeed;
|
|
} else {
|
|
Self.StopAnimation();
|
|
animating = false;
|
|
}
|
|
|
|
// Self.SetVelocity(Point(Vx, Vy));
|
|
})
|
|
}
|