【发布时间】:2021-01-21 19:53:58
【问题描述】:
我有一些不满意的 TS 代码。我正在做同样的事情三倍。这怎么可能更干净?
一个位置对象有一个 x、y 和 z 轴,可以使用 position.x = ... 设置或使用 position.set(x,y,z) 给它所有值。
我可以使用一种映射函数来遍历所有值并根据一些计算分配一个新值。
private moveTowardsCamera(camera: THREE.Camera) {
this.children.forEach((child: Asteroid) => {
child.position.set(
child.position.x += (camera.position.x - child.position.x) * this.speed,
child.position.y += (camera.position.y - child.position.y) * this.speed,
child.position.z += (camera.position.z - child.position.z) * this.speed
);
child.rotation.set(
child.rotation.x += this.rotationIncrement,
child.rotation.y += this.rotationIncrement,
child.rotation.z += this.rotationIncrement
);
});
}
【问题讨论】:
-
.set方法是什么?在同一个语句中传递一个参数和重新分配child.position.#看起来非常奇怪。例如child.position.set( child.position.x + (camera.position.x - child.position.x) * this.speed,你可以这样做吗? -
threejs.org/docs/index.html#api/en/math/Vector3 也许我可以以某种方式使用 Vector3.fromArray...
标签: javascript typescript non-repetitive