如何在 p5.js 中临时乘以向量?

How do I temporarily multiply a vector in p5.js?

我有一个名为 Boid 的对象,它有一个位置和一个速度矢量(运动方向)。更新位置时,我想应用一个用户可以控制的因素。但是,以下脚本不起作用:

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
    }
}

我也尝试过使用 speedFactor = createVector(0.1, 0.1)= [0.1, 0.1] 之类的东西,但它不起作用。

如果我使用 this.velocity.mult(speedFactor),这将影响我不想要的速度矢量(例如,因为如果 speedFactor == 0this.velocity 会变得混乱)。我试图通过使用 Object.assign({}, this.velocity)JSON.parse(JSON.stringify(this.velocity)) 创建一个速度矢量的副本来克服这个问题,但不知何故这两个都不起作用。

大多数时候我收到错误 p5.Vector.prototype.mult: x, y, or z arguments are either undefined or not a finite number

在这里做什么最好?

复制向量,然后用正常的mult方法相乘

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));
    }
}