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.

Foi útil?

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
scroll top