Change direction of group sprites based on condition

hello everyone. I’m a beginner in phaser 3 and i tried doing this

class Bee extends Phaser.GameObjects.Sprite {
	constructor(config) {
		super(config.scene, config.x, config.y, 'bee');
		config.scene.add.existing(this);
		config.scene.physics.add.existing(this);

		this.initial = [config.x, config.y];
		this.x = config.x;
		this.y = config.y;
		this.speed = 5;
	}

	preUpdate() {
		if  (this.y < this.initial[1] - 100) {
			this.speed *= -1;
		}
		if (this.y > this.initial[1] + 100) {
			this.speed *= -1;
		}

		this.y += this.speed;
		this.setY(this.y);
	}
}

Basically i want a bee object to go 100 px down and then go up and then keep doing the same. But it doesn’t seems to work.

in my scene i have created a object like this

bees = this.physics.add.group();

let bee = new Bee({scene:scene, x: 100, y:200})
bee.setScale(0.5);
bee.allowGravity = false;
bees.add(bee);

What happens?

it works once, but then the bee sprite just falls down permanently.

Change to

bees.add(bee);
bee.body.allowGravity = false;