58 lines
1.1 KiB
Haxe
58 lines
1.1 KiB
Haxe
package armory.trait;
|
|
|
|
import iron.math.Vec4;
|
|
import armory.trait.internal.CameraController;
|
|
|
|
@:keep
|
|
class SidescrollerController extends CameraController {
|
|
|
|
#if (!WITH_PHYSICS)
|
|
public function new() { super(); }
|
|
#else
|
|
|
|
public function new() {
|
|
super();
|
|
|
|
Scene.active.notifyOnInit(init);
|
|
}
|
|
|
|
function init() {
|
|
notifyOnUpdate(update);
|
|
}
|
|
|
|
var dir = new Vec4();
|
|
function update() {
|
|
if (!body.bodyReady) return;
|
|
|
|
if (jump) {
|
|
body.applyImpulse(new Vec4(0, 0, 20));
|
|
jump = false;
|
|
}
|
|
|
|
// Move
|
|
dir.set(0, 0, 0);
|
|
if (moveLeft) dir.add(transform.look().mult(-1));
|
|
if (moveRight) dir.add(transform.look());
|
|
|
|
// Push down
|
|
var btvec = body.getLinearVelocity();
|
|
body.setLinearVelocity(0.0, 0.0, btvec.z() - 1.0);
|
|
|
|
var arm = object.getChild("Ballie");
|
|
arm.animation.player.paused = true;
|
|
|
|
if (moveLeft || moveRight) {
|
|
arm.animation.player.paused = false;
|
|
arm.animation.player.dir = moveLeft ? -1 : 1;
|
|
dir.mult(-4 * 0.7);
|
|
body.activate();
|
|
body.setLinearVelocity(dir.x, dir.y, btvec.z() - 1.0);
|
|
}
|
|
|
|
// Keep vertical
|
|
body.setAngularFactor(0, 0, 0);
|
|
camera.buildMatrix();
|
|
}
|
|
#end
|
|
}
|