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);
}