Я использую пример эльфа, который является стандартным примером с ThreeJS
Вместо поворота, показанного в примере, я хочу переместить объект как в направлении x, так и в направлении y. Это должно быть достигнуто путем изменения elf.position.x
и elf.position.y
в функции init ().
Эта проблема, с которой я сталкиваюсь, заключается в том, что я создал объект (класс) методов, которые создают эльфа, поэтому я могу создать несколько из них. У меня также есть функция, которая должна перемещать объект с течением времени. var e
недоступно в функции перемещения. Когда я изменяю его на this.e
и меняю e = collada.scene;
на this.e = collada.scene;
, я получаю следующую ошибку: Uncaught TypeError: Cannot set property 'e' of undefined
Код:
class DrawElf {
constructor(scene) {
var e;
this.loadingManager = {};
this.loader = {};
this.scene = scene;
// loading manager
this.loadingManager = new THREE.LoadingManager(function () {
scene.add(e);
});
// collada
this.loader = new THREE.ColladaLoader(this.loadingManager);
this.loader.load('./models/collada/elf/elf.dae', function (collada) {
e = collada.scene;
e.scale.set(30, 30, 30);
e.position.set(100, 10, 100);
e.name = "elf.dae" + 0 + 0;
e.traverse(function (child) {
if (child instanceof THREE.Mesh) {
child.name = e.name;
ToIntersect.push(child);
}
});
});
}
move(time) {
// i want to move the object
}
}
Надеюсь, кто-нибудь может помочь.