使用键盘时,javascript中的.obj文件无法移动

时间:2018-03-24 17:15:53

标签: javascript json three.js

我的代码中最重要的部分是JavaScript。我希望当我按下&#34; down&#34;或&#34;对&#34;问题是来自.obj文件的对象正在移动,但来自<script> var container, scene, camera, renderer, controls, stats; var keyboard = new THREEx.KeyboardState(); var keyboard = new KeyboardState(); var galva; init(); animate(); render(); function init() { var spgeometry = new THREE.SphereGeometry( 30, 32, 32 ); var spmaterial = new THREE.MeshBasicMaterial( {color: 0x00000} ); galva = new THREE.Mesh( spgeometry, spmaterial ); galva.position.set(125, 150, 90); scene.add( galva ); var jsonLoader = new THREE.JSONLoader(); jsonLoader.load( "models/android.js", addModelToScene ); var loader = new THREE.OBJLoader(); loader.load("models/teaport.obj", function ( object ) { var material = new THREE.MeshLambertMaterial( ); object.traverse( function ( child ) { if ( child instanceof THREE.Mesh ) { child.material = material; } } ); object.scale.set(50,50,50); scene.add( object ); } ); } function addModelToScene( geometry, materials ) { var material = new THREE.MeshLambertMaterial( materials ); c = new THREE.Mesh( geometry, material ); c.scale.set(50,50,50); scene.add( c ); } function update() { keyboard.update(); if ( keyboard.down("left") ){ galva.translateX( -50 ); } if ( keyboard.down("right") ){ c.translateX( 50 ); galva.translateX( 50 ); object.translateX( 50 ); } controls.update(); stats.update(); } 文件的对象不是。有可能解决这个问题吗?

这是我的代码:

map.put('k', 2);

1 个答案:

答案 0 :(得分:0)

如果你把一个jsfiddle或类似的东西放在一起 - 它可能更容易弄明白。我认为你最终会变量阴影,而你的“对象”就是未定义的。请尝试以下更改。

    var loader = new THREE.OBJLoader();
    loader.load("models/teaport.obj", function ( o ) {

    var material = new THREE.MeshLambertMaterial(  );

    o.traverse( function ( child ) {

        if ( child instanceof THREE.Mesh ) {

            child.material = material;
        }
    } );
    o.scale.set(50,50,50);
    scene.add( o );
    
    object = o; // <-- important