Play with PlayCanvas

demo cube

by michaelmccrickard

HTML

<script src="https://code.playcanvas.com/playcanvas-latest.min.js"></script>
<canvas id="cube"></canvas>

CSS

body {
  margin: 0;
  padding: 0;
}

JavaScript

try {
  var canvas = document.getElementById('cube');

  // Start and init Application
  var app = new pc.Application(canvas, {
          mouse: new pc.Mouse(canvas),
          elementInput: new pc.ElementInput(canvas)
  });
  app.start();
  app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW);
  app.setCanvasResolution(pc.RESOLUTION_AUTO);

  // Create camera
  var camera = new pc.Entity();
  camera.addComponent("camera", {
    clearColor: new pc.Color(0.8, 0.8, 0.8)
  });
  app.root.addChild(camera);
  camera.setPosition(0, 0, 7);

  // Create cube
  var cube = new pc.Entity();
  cube.addComponent("model", {
    type: "box"
  });
  cube.camera = camera;
  app.root.addChild(cube);

  // Create light
  var light = new pc.Entity();
  light.addComponent('light');
  light.rotate(45, 0, 0);
  app.root.addChild(light);
  app.scene.ambientLight = new pc.Color(0.2, 0.2, 0.2);
  
  var PickerRaycast = pc.createScript('pickerRaycast');
  

  
  PickerRaycast.prototype.initialize = function() {
     app.mouse.on(pc.EVENT_MOUSEDOWN, this.onSelect, cube);
	}

  PickerRaycast.prototype.onSelect = function (e) {

    var from = this.camera.screenToWorld(e.x, e.y, this.camera.nearClip);
    var to = this.camera.screenToWorld(e.x, e.y, this.camera.farClip);

    var result = this.app.systems.rigidbody.raycastFirst(from, to);
    if (result) {
      var pickedEntity = result.entity;
      console.log(pickedEntity);
      //pickedEntity.script.pulse.pulse();
    }
  };

    cube.addComponent('script');
  cube.script.create("pickerRaycast");

  var timer = 0;
  app.on("update", function(deltaTime) {
    timer += deltaTime;

  });
} catch(e){
	alert(e.message);
}