javascript - 无法为盒子设置纹理(html5/js/babylon.js)

标签 javascript html babylonjs

我正在尝试 Babylon.js。我想设置地板纹理,但不起作用。我收到以下错误:

enter image description here

“未捕获的类型错误:_this.getScene 不是函数”(用于 Google 搜索)

我真的不明白,youtube 教程让它看起来很简单。

源代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        #canvas {
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <canvas id="canvas"></canvas>
    <script src="https://cdn.babylonjs.com/babylon.max.js"></script>
    <script>
        window.addEventListener('DOMContentLoaded', function () {
            var canvas = document.getElementById('canvas');
            var engine = new BABYLON.Engine(canvas, true);
            var createScene = function () {
                var scene = new BABYLON.Scene(engine);
                scene.clearColor = new BABYLON.Color3.White();

                var floor = BABYLON.MeshBuilder.CreateBox("floor", { height: 25, width: 800, depth: 900 }, scene);
                floor.position.y = -162.5;
                floor.position.x = 100;
                floor.position.z = 400;

                var camera = new BABYLON.ArcRotateCamera(
                    'camera1',
                    BABYLON.Tools.ToRadians(45),
                    BABYLON.Tools.ToRadians(45),
                    1000.0,
                    new BABYLON.Vector3(0, 50, 400),
                    scene);
                camera.attachControl(canvas, true);

                var light = new BABYLON.PointLight("pointlight", new BABYLON.Vector3(800, 700, 1000), scene);
                light.diffuse = new BABYLON.Color3(1, 1, 1);


                var floormaterial = new BABYLON.StandardMaterial("floormaterial", scene);
                floormaterial.diffuseTexture = BABYLON.Texture("floor.png", scene);
                floor.material = floormaterial;

                return scene;
            };

            var scene = createScene();
            engine.runRenderLoop(function () {
                scene.render();
            });

        });
    </script>
</body>
</html>

如果我删除“floormaterial.diffuseTexture = BABYLON.Texture("floor.png", scene);”一切正常。

最佳答案

您缺少纹理之前的new。该行应该是:

floormaterial.diffuseTexture = new BABYLON.Texture("floor.png", scene);

关于javascript - 无法为盒子设置纹理(html5/js/babylon.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59240048/

相关文章:

javascript - 删除字符串数组中的重音符号

javascript - 省略的数组元素是否会产生自己的属性?

html - 子 ul 的 Css 垂直显示内联到主 ul

javascript - 将事件对象和其他参数传递给 JavaScript 函数

javascript - 为什么我的变量未定义?

javascript - 如何在 javascript 中获取此类的 href?

javascript - 使用JavaScript和Jquery在下拉列表中显示后端数据

javascript - 为动态创建的元素触发 click()

react-native - 与 native react 的巴比伦语法错误

javascript - 如何使用drawtext在babylon JS动态纹理中插入换行符?