sprites.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. var createScene = function () {
  2. var scene = new BABYLON.Scene(engine);
  3. // Create camera and light
  4. var light = new BABYLON.PointLight("Point", new BABYLON.Vector3(5, 10, 5), scene);
  5. var camera = new BABYLON.ArcRotateCamera("Camera", 1, 0.8, 8, new BABYLON.Vector3(0, 0, 0), scene);
  6. camera.attachControl(canvas, true);
  7. // Create a sprite manager to optimize GPU ressources
  8. // Parameters : name, imgUrl, capacity, cellSize, scene
  9. var spriteManagerTrees = new BABYLON.SpriteManager("treesManager", "textures/palm.png", 2000, 800, scene);
  10. //We create 2000 trees at random positions
  11. for (var i = 0; i < 2000; i++) {
  12. var tree = new BABYLON.Sprite("tree", spriteManagerTrees);
  13. tree.position.x = Math.random() * 100 - 50;
  14. tree.position.z = Math.random() * 100 - 50;
  15. tree.isPickable = true;
  16. //Some "dead" trees
  17. if (Math.round(Math.random() * 5) === 0) {
  18. tree.angle = Math.PI * 90 / 180;
  19. tree.position.y = -0.3;
  20. }
  21. }
  22. //Create a manager for the player's sprite animation
  23. var spriteManagerPlayer = new BABYLON.SpriteManager("playerManager", "textures/player.png", 2, 64, scene);
  24. // First animated player
  25. var player = new BABYLON.Sprite("player", spriteManagerPlayer);
  26. player.playAnimation(0, 40, true, 100);
  27. player.position.y = -0.3;
  28. player.size = 0.3;
  29. player.isPickable = true;
  30. // Second standing player
  31. var player2 = new BABYLON.Sprite("player2", spriteManagerPlayer);
  32. player2.stopAnimation(); // Not animated
  33. player2.cellIndex = 2; // Going to frame number 2
  34. player2.position.y = -0.3;
  35. player2.position.x = 1;
  36. player2.size = 0.3;
  37. player2.invertU = -1; //Change orientation
  38. player2.isPickable = true;
  39. // Picking
  40. spriteManagerTrees.isPickable = true;
  41. spriteManagerPlayer.isPickable = true;
  42. scene.onPointerDown = function (evt) {
  43. var pickResult = scene.pickSprite(this.pointerX, this.pointerY);
  44. if (pickResult.hit) {
  45. pickResult.pickedSprite.angle += 0.5;
  46. }
  47. };
  48. return scene;
  49. }