Configuração de Javascript isso.valor é alterar a variável temp
-
12-12-2019 - |
Pergunta
Eu tenho um temp variável de um a TRÊS.Veector3 que eu passe para a criação de um objeto
object[i] = new Object(new THREE.Vector3(0,0,0));
Na classe de Objeto eu tenho uma variável textura que eu definida para o novo TRÊS.Vector3 chamado pos
function Object(pos){
this.texture = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { map:
THREE.ImageUtils.loadTexture( '../img/img.png' ) } ) );
this.texture.position = pos;
this.texture.rotation.x = 0;
this.texture.rotation.y = 1.57;
this.texture.rotation.z = 1.57;
this.texture.scale.x = 100;
this.texture.scale.y = 50;
this.texture.scale.z = 100;
this.texture.position.y = 1000;
}
O problema que eu estou tendo é que eu quero passar o pos em outro objeto criado dentro deste Objeto.
object2 = new Object2(pos);
No entanto pos foi modificado para ter o y a 1000.Eu não tenho certeza por que isso está acontecendo eu ler alguns guias sobre a passagem de variáveis, mas eu ainda estou um pouco confuso sobre como o pos variável é modificada.Qualquer ajuda seria muito apreciada.
Solução
Basta alterar o seu objeto de sempre tomar um clone da posição
function Object(pos){
this.texture = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { map:
THREE.ImageUtils.loadTexture( '../img/img.png' ) } ) );
this.texture.position = pos.clone();
this.texture.rotation.x = 0;
this.texture.rotation.y = 1.57;
this.texture.rotation.z = 1.57;
this.texture.scale.x = 100;
this.texture.scale.y = 50;
this.texture.scale.z = 100;
this.texture.position.y = 1000;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow