Tengo un objeto llamado Boid que tiene una posición y un vector de velocidad (la dirección del movimiento). Al actualizar la posición, quiero aplicar un factor que el usuario pueda controlar. Sin embargo, el siguiente script no funciona:
let speedFactor = 0.1; //ranges from 0 to 2 class Boid { constructor(x, y) { this.position = createVector(x, y); this.velocity = p5.Vector.random2D(); } update() { this.position.add(this.velocity * speedFactor); // doesn't work } } También traté de usar cosas como speedFactor = createVector(0.1, 0.1) or = [0.1, 0.1] , pero no funciona.
Si uso this.velocity.mult(speedFactor) , esto afectará el vector de velocidad, que no quiero (por ejemplo, porque si speedFactor == 0 , this.velocity se estropeará). He intentado crear una copia del vector de velocidad para superar esto usando Object.assign({}, this.velocity) o JSON.parse(JSON.stringify(this.velocity)) , pero de alguna manera eso tampoco funciona .
La mayoría de las veces recibo el error p5.Vector.prototype.mult: x, y, or z arguments are either undefined or not a finite number .
¿Qué sería lo mejor para hacer aquí?
Copie el vector, luego multiplíquelo con el método mult normal
let speedFactor = 0.1; //ranges from 0 to 2 class Boid { constructor(x, y) { this.position = createVector(x, y); this.velocity = p5.Vector.random2D(); } update() { this.position.add(this.velocity.copy().mult(speedFactor)); } }