2016-12-21 5 views
2

私の最初の質問StackOverflow!Three.jsをクリックして3DObjectのサイズを変更する方法は、scale.set以外のサイズ変更の方法がありますか?

私は、javascript対話型ゲームを作成しています。イベントが発生するたびに、マンゴーを大きく/小さく/異なる色にすることをお勧めします。私はテストしていますし、マンゴーにイベントリスナーを置いて、それはサイズ変更しますが、コールバックでscale.setを使用するだけです。これを行う別の方法がありますか?私はそれが一定の、しかし未定のサイズまでサイズが増え続けることを望んでいます。私はちょうど同じことに加えて私のリンターは私に叫んだ結果のパーセンテージを使用してみました。ここに私の関連するコードは次のとおりです。あなたが批判や親切にコメントしたいと思います私のコードで何かを見れば

const Mango = function() { 
    this.mesh = new THREE.Object3D(); 
    const geom = new THREE.BoxGeometry(8, 16, 5, 8, 8, 8); 

    // making the box round 
    for (let i = 0; i< geom.vertices.length; i++) { 
    geom.vertices[i].normalize().multiplyScalar(16); 
    } 

    for (let i = 0; i < geom.faces.length; i ++) { 
    let face = geom.faces[i]; 

    face.vertexNormals[0].copy(geom.vertices[face.a]).normalize(); 
    face.vertexNormals[1].copy(geom.vertices[face.b]).normalize(); 
    face.vertexNormals[2].copy(geom.vertices[face.c]).normalize(); 
    } 

    // making it oblong 
    geom.applyMatrix(new THREE.Matrix4().makeScale(1.0, 1.3, 0.6)); 

    // adding mango skin 
    const loader = new THREE.TextureLoader(); 
    const mangoMap = loader.load("images/mangoMap.jpg"); 
    const mat = new THREE.MeshPhongMaterial({ 
    color: 0xffd507, 
    shininess: 40, 
    map: mangoMap, 
    }); 
    const mango = new THREE.Mesh(geom, mat); 

    // adding eventlistener 
    const domEvents = new THREEx.DomEvents(camera, renderer.domElement); 
    domEvents.addEventListener(mango, 'click', function increaseMangoSize(e) { 
    mango.scale.set(1.2, 1.2, 1.2); 
    }); 

    this.mesh.add(mango); 

}; 

また、私に知らせてください!私は今日Three.jsと仕事を始めたばかりで、たくさんのことを学びます。

答えて

0

I FIGURED IT OUT !!私は

mango.scale.multiplyScalar(1.2); 

の代わりに使用しています。 PHEW!

+0

他のコメント/提案がある場合はお知らせください。 –

関連する問題