2016-04-02 6 views
0

Also, ich habe meine Szene in Blender in Babylonjs geladen, und es produziert einige interessante Effekte. Im Grunde versuche ich, die Schwerkraft und dergleichen auf die Szene anzuwenden, den Spieler an die richtige Stelle zu bewegen und die gesamte Szene zu beleuchten und sichtbar zu machen, aber nichts davon funktioniert. Dies ist das Skript:Szenenrendering seltsam in babylonjs

var BABYLON; 
var canvas = document.getElementById('gamecanvas'); 
var engine = new BABYLON.Engine(canvas, true); 
var player_height = 2; 
var player_speed = 1; 
var player_inertia = 0.9; 

function INIT_GAME(){ 
    BABYLON.SceneLoader.Load('Scenes/', 'zombie_map.babylon', engine, function(newScene){ 
     var scene = newScene; 
     var light = new BABYLON.PointLight('light', new BABYLON.Vector3(0,0,10), scene); 
     var player = new BABYLON.FreeCamera('player', new BABYLON.Vector3(1,1,1), scene); 
     scene.activeCamera = player; 
     scene.activeCamera.attachControl(canvas, true); 
     scene.enablePhysics(); 
     scene.setGravity(new BABYLON.Vector3(0, -10, 0)); 
     player.ellipsoid = new BABYLON.Vector3(1, player_height, 1); 
     player.checkCollisions = true; 
     player.applyGravity = true; 
     player.keysUp = [87]; 
     player.keysDown = [83]; 
     player.keysLeft = [65]; 
     player.keysRight = [68]; 
     player.inertia = player_inertia; 
     player.speed = player_speed; 
     newScene.executeWhenReady(function(){ 
      engine.runRenderLoop(function(){ 
       newScene.render(); 
      }); 
     }); 
    }); 

canvas.height = window.innerHeight; 
canvas.width = window.innerWidth; 
canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock; 
canvas.requestPointerLock(); 

window.addEventListener('resize', function(){ 
    engine.resize(); 
}); 

}

Die Fragen, die ich habe, sind:

  1. Wie mache ich das machen Abstand höher, so dass ich die ganze Szene sehen können?
  2. Warum funktionieren keine meiner Szeneneigenschaften (Schwerkraft, Bewegung usw.)?
+0

Für die erste Frage, können Sie die 'position' Eigenschaft der Kamera ändern. – ConnorsFan

+0

Ich habe das versucht, und es ändert sich die Position überhaupt nicht, was zu der Fremdheit –

+0

Sie könnte versuchen, Ihr Problem auf Babylons Spielplatz zu reproduzieren (http://www.babylonjs-playground.com/). Wenn Sie Ihren Test speichern, können andere Personen darauf zugreifen und sie debuggen. Sie können auch ihr Forum konsultieren (http://www.html5gamedevs.com/forum/16-babylonjs/). – ConnorsFan

Antwort

0

Ihre player Kamera sollte als aktive Kamera eingestellt werden:

var player = new BABYLON.FreeCamera('player', new BABYLON.Vector3(1,1,1), scene); 
scene.activeCamera = player; 
scene.activeCamera.attachControl(canvas, true); 
+0

Die Kamerabewegung funktioniert jetzt, aber der Rest der Eigenschaften funktioniert immer noch nicht. –

+0

Nicht leicht, diese Eigenschaften zu testen (checkCollisions, applyGravity, etc.). Sie sagen, dass die Kamerabewegung funktioniert, funktionieren die Tasten? – ConnorsFan

+0

Ja, die Kamera ist beweglich, aber wenn ich eine Bewegungstaste drücke, bewegt sie sich nur nach unten. Die Szene hat immer noch keine Schwerkraft oder Kollisionen. –