Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在屏幕上移动网格而不处于动画中_Javascript_Babylonjs - Fatal编程技术网

Javascript 在屏幕上移动网格而不处于动画中

Javascript 在屏幕上移动网格而不处于动画中,javascript,babylonjs,Javascript,Babylonjs,你能告诉我为什么这在浏览器中不起作用,尽管我认为这是在屏幕上移动网格而不被撕裂(撕裂动画)的正确方法吗 它开始正确地移动网格,但一段时间后,网格在没有逻辑的情况下四处飞行。对于浏览器来说,设置和清除间隔是否是一个问题 谢谢。现在它正在运行,也许我有一个解决方案: var leftf; var rightf; $(document).keyup(function() {

你能告诉我为什么这在浏览器中不起作用,尽管我认为这是在屏幕上移动网格而不被撕裂(撕裂动画)的正确方法吗

它开始正确地移动网格,但一段时间后,网格在没有逻辑的情况下四处飞行。对于浏览器来说,设置和清除间隔是否是一个问题

谢谢。

现在它正在运行,也许我有一个解决方案:
    var leftf;
                    var rightf;
                    $(document).keyup(function() {

                        clearInterval(leftf);
                        clearInterval(rightf);                              
                    });

                        $(document).keydown(function (e) {


                            if (e.which == 37) {
                                // Left Arrow Pushed
                                leftf=setInterval(function(){
                                meshes[0].rotation.y=Math.PI/4;
                                if(meshes[0].position.x>-3.5)meshes[0].position.x-=0.1;
                                console.log(meshes[0].position.x);
                                },1000/engine.getFps());

                            } else if (e.which == 39) {
                                // Right Arrow Pushed
                                meshes[0].rotation.y=3*Math.PI/4;
                                //meshes[0].translate(BABYLON.Axis.X, Math.sin(v), BABYLON.Space.WORLD);
                                rightf=setInterval(function(){                                                          
                                meshes[0].position.x+=0.1;
                                },1000/engine.getFps());
                            }
}); 
js示例代码键盘箭头 html,正文{ 溢出:隐藏; 宽度:100%; 身高:100%; 保证金:0; 填充:0; } #renderCanvas{ 宽度:100%; 身高:100%; 触摸动作:无; } 文本 var canvass=$(“#renderCanvas”); //看看我们是否能做webgl //JQUERY PEEPS警报:canvas是JQUERY obj-在canvas[0]访问dom obj var dcanvas=画布[0]; expmt=假; 如果(“窗口中的WebGLRenderingContext”){ //警告(“浏览器至少知道什么是webgl。”); } //某些浏览器没有用于画布的.getContext。。。 试试{ gl=dcanvas.getContext(“webgl”); }捕获(x){ gl=null; } 如果(gl==null){ 试试{ gl=dcanvas.getContext(“实验性webgl”); }捕获(x){ gl=null; } 如果(gl==null){ //log('但不能说'); }否则{ expmt=true;//警报('webgl'); } }否则{ //警报(“webgl本机”); } 如果(德国劳埃德船级社){ //警报(“正在加载webgl内容”); }否则{ 警报(“CHYBA:Vášprehliadačnepodporuje WebGL,ľutujeme。(错误:您的浏览器不支持WebGL,抱歉。)”; canvas.remove(); } if(巴比伦引擎isSupported()){ var canvas=document.getElementById(“renderCanvas”); var引擎=新巴比伦引擎(画布,真); var场景=新巴比伦。场景(引擎); //天空盒 var skybox=BABYLON.Mesh.CreateBox(“skybox”,800.0,场景); var skyboxMaterial=新巴比伦。标准材质(“skyBox”,场景); skyboxMaterial.backFaceCulling=false; skyboxMaterial.reflectionTexture=new BABYLON.CubeTexture(“索引子目录/skybox/cubemap”,场景); skyboxMaterial.reflectionTexture.CoordinateMode=BABYLON.Texture.SKYBOX_模式; skyboxMaterial.diffuseColor=new BABYLON.Color3(0,0,0); skyboxMaterial.specularColor=新巴比伦。颜色3(0,0,0); skybox.material=skyboxMaterial; //var sphere=BABYLON.Mesh.CreateSphere(“球体”,1.0,1.0,场景); var createScene=函数(){ //设置环境 var light0=新巴比伦。点光源(“Omni”,新巴比伦。矢量3(0,10,80),场景); var摄像机=新巴比伦。自由摄像机(“自由摄像机”,新巴比伦。矢量3(0,0,-5),场景); var light2=新巴比伦。点光源(“Omni”,新巴比伦。矢量3(10,10,-80),场景); var左转=假;var右转=假; var加速=错误;var中断=错误; BABYLON.SceneLoader.ImportMesh(“Cube.001”,“index_subory/”,“jet2b.BABYLON”,场景,函数(网格){ 网格[0].position.x=Math.round((Math.random()*1)+0); 网格[0].position.y=Math.round((Math.random()*1)+0); var速度=0; scene.registerBeforRender(函数(){ 如果(scene.isReady()){ camera.target=sphere.position; 速度=0.02; 如果(右转){ 网格[0]。旋转.y=3*Math.PI/4; 网格[0]。位置.x+=速度; } 如果(左转){ 网格[0]。rotation.y=Math.PI/4; 网格[0]。位置.x-=速度; } 如果(断开){ 网格[0]。rotation.y=Math.PI/2; 网格[0]。位置。y-=速度; } 如果(加速){ 网格[0]。rotation.y=Math.PI/2; 网格[0]。位置。y+=速度; } } }); var sphere=BABYLON.Mesh.CreateSphere(“球体”,0.5,0.5,场景); var simpleMaterial=新巴比伦。标准材质(“纹理2”,场景); simpleMaterial.diffuseColor=new BABYLON.Color3(0,1,0);//绿色 球体材料=简单材料; sphere.position.x=Math.floor((Math.random()*2)); sphere.position.y=Math.floor((Math.random()*2)); 球体位置z=3; myVar2变种; 函数myFunction2(){ myVar=setInterval(函数(){ //球体。平移(巴比伦。轴。Z,-0.1,巴比伦。空间。世界); 球体位置z-=0.1; varδ=0.2;
如果(Math.abs(Math.round(meshes[0].position.x-sphere.position.x]),你能给我们举个例子,而不仅仅是一堆代码。另外,请阅读:
Now it is running, perhaps I have a solution:

<!DOCTYPE html>
<html><head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>Babylon.js sample code keyboard arrows</title>
        <!-- Babylon.js -->
        <script src="index_subory/hand.js"></script>
        <script src="index_subory/cannon.js"></script>
        <script src="index_subory/oimo.js"></script>
        <script src="index_subory/babylon.2.0.debug.js"></script>
        <script src="index_subory/jquery.min.js"></script>
        <style>
            html, body {
                overflow: hidden;
                width: 100%;
                height: 100%;
                margin: 0;
                padding: 0;
            }

            #renderCanvas {
                width: 100%;
                height: 100%;
                touch-action: none;
            }
        </style>
    </head>
<body>
    <div id="idecko" style="background-color:grey;color:white;font-weight:bold;margin-left:auto;margin-right:auto;text-align:center;">text </div>
    <canvas height="782" width="1440" id="renderCanvas"></canvas>
    <script>
        var canvass = $('#renderCanvas');   
        // check to see if we can do webgl
// ALERT FOR JQUERY PEEPS: canvas is a jquery obj - access the dom obj at canvas[0]
var dcanvas = canvass[0];
expmt = false;
if ("WebGLRenderingContext" in window) {
    //alert("browser at least knows what webgl is.");
}
// some browsers don't have a .getContext for canvas...
try { 
    gl = dcanvas.getContext("webgl"); 
    }catch (x){ 
        gl = null; 
        }
if (gl == null) {
    try { 
        gl = dcanvas.getContext("experimental-webgl"); 
        }catch (x){ 
            gl = null; 
            }
if (gl == null) { 
    //console.log('but can\'t speak it'); 
    }else { 
        expmt = true; //alert('webgl experimentally.'); 
        }
} else {
    //alert('webgl natively');
}

if (gl || expmt) {
//alert("loading webgl content.");
} else {
alert("CHYBA: Váš prehliadač nepodporuje WebGL, ľutujeme. (ERROR: Your browser does not support WebGL, sorry.)");
canvas.remove();
}


         if (BABYLON.Engine.isSupported()) {
        var canvas = document.getElementById("renderCanvas");
        var engine = new BABYLON.Engine(canvas, true);
        var scene = new BABYLON.Scene(engine);



        // Skybox
    var skybox = BABYLON.Mesh.CreateBox("skyBox", 800.0, scene);
    var skyboxMaterial = new BABYLON.StandardMaterial("skyBox", scene);
    skyboxMaterial.backFaceCulling = false;
    skyboxMaterial.reflectionTexture = new BABYLON.CubeTexture("index_subory/skybox/cubemap", scene);
    skyboxMaterial.reflectionTexture.coordinatesMode = BABYLON.Texture.SKYBOX_MODE;
    skyboxMaterial.diffuseColor = new BABYLON.Color3(0, 0, 0);
    skyboxMaterial.specularColor = new BABYLON.Color3(0, 0, 0);
    skybox.material = skyboxMaterial;




         //var sphere = BABYLON.Mesh.CreateSphere("sphere", 1.0, 1.0, scene);



        var createScene = function () {


            // setup environment
            var light0 = new BABYLON.PointLight("Omni", new BABYLON.Vector3(0, 10,80), scene);
            var camera = new BABYLON.FreeCamera("FreeCamera", new BABYLON.Vector3(0, 0, -5), scene);
            var light2 = new BABYLON.PointLight("Omni", new BABYLON.Vector3(10, 10, -80), scene);




            var turnLeft = false; var turnRight = false;
            var accelerate = false; var breaking = false;


            BABYLON.SceneLoader.ImportMesh("Cube.001", "index_subory/", "jet2b.babylon", scene,function(meshes){

                meshes[0].position.x = Math.round((Math.random() * 1) + 0);
                meshes[0].position.y = Math.round((Math.random() * 1) + 0);



                var speed = 0;
    scene.registerBeforeRender(function() {
        if (scene.isReady()) {            
            camera.target = sphere.position;   
            speed=0.02;            
           if (turnRight) { 
               meshes[0].rotation.y=3*Math.PI/4;                       
               meshes[0].position.x += speed;
           }                                       
           if (turnLeft) {  
               meshes[0].rotation.y=Math.PI/4;         
               meshes[0].position.x -= speed; 
           }           
           if (breaking) {  
               meshes[0].rotation.y=Math.PI/2;         
               meshes[0].position.y -= speed; 
           }           
           if (accelerate) {
               meshes[0].rotation.y=Math.PI/2;             
               meshes[0].position.y += speed; 
           }                                
        }

    });




                var sphere = BABYLON.Mesh.CreateSphere("sphere", 0.5, 0.5, scene);
                        var simpleMaterial = new BABYLON.StandardMaterial("texture2", scene);
                        simpleMaterial.diffuseColor = new BABYLON.Color3(0, 1, 0);//Green
                        sphere.material=simpleMaterial;
                        sphere.position.x = Math.floor((Math.random() * 2) );
                        sphere.position.y = Math.floor((Math.random() * 2) );
                        sphere.position.z=3;



                var myVar2;

                function myFunction2() {
                    myVar = setInterval(function(){ 
                        //sphere.translate(BABYLON.Axis.Z, -0.1, BABYLON.Space.WORLD);
                        sphere.position.z-=0.1;                     
                        var delta=0.2;

                        if(Math.abs(Math.round(meshes[0].position.x-sphere.position.x))<=delta&&Math.abs(Math.round(meshes[0].position.y-sphere.position.y))<=delta&&Math.abs(Math.round(meshes[0].position.z-sphere.position.z))<=delta){
                            $('#idecko').html('<span style=\'background-color:yellow;color:red;\'>BANG! Červeného trpaslíka trafila zelená planéta! (Red dwarf shot by green planet!)</span>');
                            //$('#idecko').append("<embed src='index_subory/explosion.mp3' hidden=true autostart=true loop=false>");                            
                            if(navigator.userAgent.indexOf("Trident")==-1)var audio = new Audio('index_subory/explosion.mp3');
                            if(navigator.userAgent.indexOf("Trident")!=-1)var audio = new Audio('index_subory/explosion.wav');
                            audio.loop = false;
                            audio.play();
                            simpleMaterial.diffuseColor = new BABYLON.Color3(0, 0, 1);//Green
                            sphere.material=simpleMaterial;
                        }else{
                            $('#idecko').html('<span style=\'background-color:grey;color:white;\'>Unikaj červený trpaslík (šípky na klávesnici)! (Run away red dwarf (keyboard arrows)!)</span>');

                        }


                        if(sphere.position.z<-5){
                                sphere.position.x = Math.floor((Math.random() * 2) );
                                sphere.position.y = Math.floor((Math.random() * 2) );
                                sphere.position.z=3;
                                simpleMaterial.diffuseColor = new BABYLON.Color3(0, 1, 0);//Green
                                sphere.material=simpleMaterial;
                            }
                         }, 50);
                }

                function myStopFunction2() {
                    clearTimeout(myVar2);
                }       


                myFunction2();      




                $(document).keyup(function (evt) {
                    if (evt.keyCode == 37 || evt.keyCode == 39) {
            turnLeft = false;
            turnRight = false;
        }

        if (evt.keyCode == 38 || evt.keyCode == 40) {
            accelerate = false;
            breaking = false;
        }

                   });

                $(document).keydown(function (evt) {
                            if (!scene)
            return;

        //console.log(evt.keyCode);

        if (evt.keyCode == 32) {

        }


        //Key LEFT
        if (evt.keyCode == 37) {
            turnLeft = true;
            turnRight = false;

        }

        //Key RIGHT
        if (evt.keyCode == 39) {
            turnLeft = false;
            turnRight = true;
        }

        //Key UP
        if (evt.keyCode == 38) {
            accelerate = true;
            breaking = false;

        }

        //Key BACK
        if (evt.keyCode == 40) {
            breaking = true;
            accelerate = false;
        }

                  }); 

                });

           return scene;
        }


        var scene = createScene();

    var assetsManager = new BABYLON.AssetsManager(scene);
    //var meshTask = assetsManager.addMeshTask("jet2 task", "", "./index_subory/", "jet2.babylon");
    var textTask0 = assetsManager.addTextFileTask("text task0", "./index_subory/jet2b.babylon");
    var textTask1 = assetsManager.addTextFileTask("text task1", "./index_subory/hand.js");
    var textTask2 = assetsManager.addTextFileTask("text task2", "./index_subory/cannon.js");
    var textTask3 = assetsManager.addTextFileTask("text task3", "./index_subory/oimo.js");
    var textTask4 = assetsManager.addTextFileTask("text task4", "./index_subory/babylon.2.0.debug.js");
    var textTask5 = assetsManager.addTextFileTask("text task5", "./index_subory/jquery.min.js"); 
    var binaryTask1 = assetsManager.addBinaryFileTask("binary task 1", "./index_subory/explosion.mp3");   
    var binaryTask2 = assetsManager.addBinaryFileTask("binary task 2", "./index_subory/explosion.wav");   
    var binaryTask3 = assetsManager.addBinaryFileTask("binary task 3", "./index_subory/skybox/cubemap_nx.jpg");   
    var binaryTask4 = assetsManager.addBinaryFileTask("binary task 4", "./index_subory/skybox/cubemap_ny.jpg");   
    var binaryTask5 = assetsManager.addBinaryFileTask("binary task 5", "./index_subory/skybox/cubemap_nz.jpg");   
    var binaryTask6 = assetsManager.addBinaryFileTask("binary task 6", "./index_subory/skybox/cubemap_px.jpg");   
    var binaryTask7 = assetsManager.addBinaryFileTask("binary task 7", "./index_subory/skybox/cubemap_py.jpg");   
    var binaryTask8 = assetsManager.addBinaryFileTask("binary task 8", "./index_subory/skybox/cubemap_pz.jpg");   



    //engine.displayLoadingUI();
    engine.loadingUIText = "Loading... (Načítavanie...)";
    assetsManager.onTaskSuccess = function (task) {
            // Do something with task.data.
            //engine.hideLoadingUI();
        };
    assetsManager.onTaskError = function (task) {
            // Do something with task.data.
            alert('Error with loading by assetsManager...');                
        };
    assetsManager.onFinish = function (task) {
    //engine.hideLoadingUI();
        engine.setSize($(window).width(), $(window).height());  
        engine.runRenderLoop(function () {
        scene.render();

        });
    };

    assetsManager.load();
        // Resize
        window.addEventListener("resize", function () {
            engine.resize();
        });
        }else{
            alert("Chyba: Nemôžem spustiť WebGL. (Error: Can't run WebGL.)");
        }
    </script>


</body></html>