I would like the character to stay on the platform as it revolves around the point, instead they stay in the same x coordinate and slide off. Below is my code for the ferris wheel.
I tried a workaround where I just move it around the point in an octagon, but that also has a problem. Any time the platform either stops moving upward or starts moving downward, the player doesn’t stick to it and changes to the “falling” state for 1 to 3 frames (I switch it to that state when it recognizes that player.body.onFloor() == false). Any way to make the player stay planted on the platform while it starts to descend?
Thanks in advance.
export default class FerrisWheel {
constructor(scene, player){
scene.ferris_wheels = scene.physics.add.group();
this.scene = scene
this.player = player
this.scene.ferris_wheel_array = []
this.once = false
}
update(player){
this.scene.ferris_wheel_array.forEach(function(ferris_wheel) {
for (var i=0; i<ferris_wheel.data.values.obj.ferris_wheel_cabins.length; i++){
Phaser.Actions.RotateAroundDistance([ferris_wheel.data.values.obj.ferris_wheel_cabins[i]], { x: ferris_wheel.x, y: ferris_wheel.y }, 0.0147, 200);
}
})
}
addFerrisWheel(scene, x, y, scale, angular_velocity) {
var ferris_wheel = scene.ferris_wheels.create(x, y, 'ferris_wheel_base');
ferris_wheel.setActive(true).setVisible(true);
ferris_wheel.setScale(scale);
ferris_wheel.setDepth(800);
scene.ferris_wheel_array.push(ferris_wheel)
ferris_wheel.setData({
'layer_collisions': [],
'can_spawn': true,
'obj': this,
});
scene.ferris_wheels.add(ferris_wheel);
ferris_wheel.body.immovable = true;
ferris_wheel.body.setAllowGravity(false)
ferris_wheel.setAngularVelocity(angular_velocity)
ferris_wheel.stand = scene.physics.add.sprite(x, y + 150, 'ferris_wheel_stand')
ferris_wheel.stand.body.setAllowGravity(false);
ferris_wheel.stand.setScale(scale).setDepth(700)
this.ferris_wheel_cabins = []
ferris_wheel.cabin1 = scene.physics.add.sprite(x, y + 175, 'ferris_wheel_cabin')
console.log(ferris_wheel.cabin1);
ferris_wheel.cabin1.setActive()
ferris_wheel.cabin1.body.setAllowGravity(false);
ferris_wheel.cabin1.setScale(scale).setDepth(850).setFrame(0)
ferris_wheel.cabin1.body.immovable = true
this.ferris_wheel_cabins.push(ferris_wheel.cabin1)
for (var i=0; i<this.ferris_wheel_cabins.length; i++){
scene.physics.add.collider(this.ferris_wheel_cabins[i], this.player.player,
function(platform, player){
platform.body.immovable = true
player.body.immovable = false
},
function(platform, player){
var v = (player.obj.scene.game.data.health > 0)
return v
}
)
}
return ferris_wheel
}
}