module('entity') module('input') module('color') module('math') module('scene') module('event') module('entitycamera') local phys local updateSub local SPEED = 4.0 local mat function entityInit() local pos = entityPositionAdd(ENTITY_ID) pos.x = 0 pos.y = 1 pos.z = 0 phys = entityPhysicsAdd(ENTITY_ID) phys:setShapeCapsule(0.3, 0.9) local mesh = entityMeshAdd(ENTITY_ID) mesh:generateCapsule(0.3, 0.9) mat = entityMaterialAdd(ENTITY_ID) updateSub = eventSubscribe(SCENE_EVENT_UPDATE, onUpdate) end function onUpdate() local moveX = inputAxis(INPUT_ACTION_LEFT, INPUT_ACTION_RIGHT) local moveZ = inputAxis(INPUT_ACTION_DOWN, INPUT_ACTION_UP) mat.color = colorRainbow() local cam = entityCameraGetCurrent() local fwd = cam:getForward() local right = cam:getRight() local vy = phys.velocityY phys.velocityX = (moveX * right.x + moveZ * fwd.x) * SPEED phys.velocityZ = (moveX * right.y + moveZ * fwd.y) * SPEED end function entityDispose() eventUnsubscribe(SCENE_EVENT_UPDATE, updateSub) end