UNPKG

voxel-spider

Version:

blocky spider creatures for your voxel.js game

96 lines (83 loc) 2.53 kB
var texture = require('voxel-texture'); var physical = require('voxel-physical'); var voxelCreature = require('voxel-creature'); module.exports = function (game) { var createCreature = voxelCreature(game); return function () { var spider = createSpider(game); return createCreature(spider); }; }; function createSpider (game) { var T = game.THREE; var body = new T.Object3D; var abdomen = new T.Mesh( new T.CubeGeometry(10, 10, 10), new T.MeshLambertMaterial({ color: 0x200830, ambient: 0x200830 }) ); abdomen.position.set(0, 10, 0); body.add(abdomen); var head = new T.Mesh( new T.CubeGeometry(5, 5, 5), new T.MeshLambertMaterial({ color: 0x200830, ambient: 0x200830 }) ); head.position.set(0, 8, 7.5); body.add(head); var eyes = [0,1].map(function () { var eye = new T.Mesh( new T.CubeGeometry(1, 1, 1), new T.MeshLambertMaterial({ color: 0xffffff, ambient: 0xffffff }) ); body.add(eye); return eye; }); eyes[0].position.set(1.5, 9, 10); eyes[1].position.set(-1.5, 9, 10); var legs = []; for (var side = 0; side <= 1; side++) { for (var i = 0; i < 4; i++) { var leg = new T.Object3D; leg.position.z = i * 1.5; leg.state = i % 2; leg.position.y = leg.state + 3; legs.push(leg); body.add(leg); var horiz = new T.Mesh( new T.CubeGeometry(5, 1, 1), new T.MeshLambertMaterial({ color: 0x200830, ambient: 0x200830 }) ); horiz.position.x = 7.5 - side * 15; horiz.position.y = 4; leg.add(horiz); var vert = new T.Mesh( new T.CubeGeometry(1, 5, 1), new T.MeshLambertMaterial({ color: 0x200830, ambient: 0x200830 }) ); vert.position.x = 10 - side * 20; vert.position.y = 1.5; leg.add(vert); } } setInterval(function () { legs.forEach(function (leg) { leg.state = !leg.state; leg.position.y = leg.state + 3; }); }, 250); return body; }