Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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构造函数属性-Babylon.js_Javascript_Oop_Babylonjs - Fatal编程技术网

无法识别JavaScript构造函数属性-Babylon.js

无法识别JavaScript构造函数属性-Babylon.js,javascript,oop,babylonjs,Javascript,Oop,Babylonjs,最简单的方法是提供一个指向Babylon.js游乐场的链接,而不是不方便地粘贴整个代码。如果您不熟悉它,它基本上是一个类似JSFIDLE的环境,但专门用于Babylon.js webGL渲染。它已经启动了画布、引擎和渲染循环(术语?) 我已经为三种不同的星星类型创建了构造函数:黄星、白星和红星。我将它们粘贴到游乐场代码中,但在本地,这3个函数位于单独的文件中。您会注意到,黄星的发射粒子没有渲染图像,这很好,因为它与问题无关。前景中较大的白色球体被认为是发射的红色(红星物体)。背景中较小的白色球

最简单的方法是提供一个指向Babylon.js游乐场的链接,而不是不方便地粘贴整个代码。如果您不熟悉它,它基本上是一个类似JSFIDLE的环境,但专门用于Babylon.js webGL渲染。它已经启动了画布、引擎和渲染循环(术语?)

我已经为三种不同的星星类型创建了构造函数:黄星、白星和红星。我将它们粘贴到游乐场代码中,但在本地,这3个函数位于单独的文件中。您会注意到,黄星的发射粒子没有渲染图像,这很好,因为它与问题无关。前景中较大的白色球体被认为是发射的红色(红星物体)。背景中较小的白色球体(WhiteStar objectcs)是白色的,因为它们应该是白色的,但发射属性也不适用于这些球体

我知道我建造它们的方式有问题。因为没有太多的公共属性,所以我没有设置从主星型构造函数继承。传递对象的球体和材质参数可能会首先破坏创建构造函数的便利性。但是有一件事我做错了,没有意识到,或者没有考虑到,这使得.mat属性无法工作,因此材质无法渲染。我希望所有对象(最终包括行星)都来自一个文件

每次我有一个问题我都搞不清楚,它通常与作用域有关。WhiteStar和RedStar的材料属性没有被识别。我不明白,因为每个.mat的作用域应该限制在它自己的功能范围内

var YellowStar = function (position, size, scene) {
    this.sphere = BABYLON.Mesh.CreateSphere("sphere1", 30, 30*size, scene); 
    this.mat = new BABYLON.StandardMaterial("white", scene);
    this.mat.diffuseTexture = new BABYLON.Texture("textures/suntexture.jpg", scene);
    this.mat.specularColor = new BABYLON.Color3(0, 0, 0);
    this.sphere.material = this.mat;
    this.sphere.position = position;

    /*...this material works...*/
};

var WhiteStar = function(position, size, scene){
    this.sphere = BABYLON.Mesh.CreateSphere("whiteStar", 20, 15*size, scene); 
    this.mat = new BABYLON.StandardMaterial("white", scene);
    this.mat.emissiveColor = new BABYLON.Color3(1, 1, 1);
    this.sphere.material = this.mat; /* doesn't work */
}

var RedStar = function (position, size, scene) {
    this.sphere = BABYLON.Mesh.CreateSphere("redStar", 20, 30*size, scene); 
    this.mat = new BABYLON.StandardMaterial("red", scene);
    this.mat.emissiveColor = new BABYLON.Color3(0.714, 0.239, 0.169);
    this.sphere.material = this.mat;  /*doesnt work*/

};

Babylon确实有一个社区,但问题更多地涉及到引擎,我在这里更成功地回答了一般的Javascript问题。多亏了在摆弄它之后,看起来你必须在发射颜色工作之前显式地添加/定义漫反射颜色。我不知道为什么

注:白星发射颜色完全是白色的,所以我不确定你怎么知道它是否工作


HTH

好的,一直都是灯光!我当时突然想到,我觉得……不……灯光太强了……至少我的东西很好