2016-04-02 3 views
0

Итак, я загрузил свою сцену, которую я создал в Blender, в Babylonjs, и это создает некоторые интересные эффекты. В основном, я пытаюсь применить гравитацию и так на сцене, переместить игрока в нужное место и сделать всю сцену освещенной и видимой, но ничто из этого не работает. Это сценарий:Сцена рендеринга странно в 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(); 
}); 

}

вопросов, которые я являюсь:

  1. Как сделать рендер расстояния выше, так что я могу посмотреть всю сцену?
  2. Почему не работает ни одна из моих свойств сцены (гравитация, движение и т. Д.)?
+0

Для первого вопроса, то вы можете изменить 'position' свойство камеры. – ConnorsFan

+0

Я пробовал это, и он не меняет положение вообще, добавляя к странности –

+0

Вы можете попытаться воспроизвести вашу проблему на детской площадке Babylon (http://www.babylonjs-playground.com/). Если вы сохраните тест, другие люди смогут получить к нему доступ и отладить его. Вы также можете ознакомиться со своим форумом (http://www.html5gamedevs.com/forum/16-babylonjs/). – ConnorsFan

ответ

0

Ваш player камера должна быть установлена ​​в качестве активной камеры:

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

Движение камеры теперь работает, но остальные свойства все еще не работают. –

+0

Мне нелегко проверить эти свойства (checkCollisions, applyGravity и т. Д.). Вы говорите, что движение камеры работает, работают ли клавиши? – ConnorsFan

+0

Да, камера подвижная, но когда я нажимаю клавишу перемещения, она перемещается только вниз. Сцена по-прежнему не имеет силы тяжести или столкновения. –