76 lines
1.7 KiB
Text
76 lines
1.7 KiB
Text
-- Lesson 22: Into 3D. The finished script, exactly as the lesson ends.
|
|
|
|
local turnLeft = false
|
|
local turnRight = false
|
|
local tiltUp = false
|
|
local tiltDown = false
|
|
|
|
sceneEnable(true)
|
|
sceneSetBackground(18, 20, 34)
|
|
sceneSetAmbient(35, 35, 45)
|
|
|
|
local paint = materialNew()
|
|
materialSetColor(paint, 215, 95, 60)
|
|
materialSetRoughness(paint, 0.6)
|
|
|
|
local box = nodeNew()
|
|
nodeSetMesh(box, meshBox(2, 2, 2), paint)
|
|
|
|
local sun = lightNew(LIGHT_DIRECTIONAL)
|
|
nodeSetPosition(sun, 4, 6, 5)
|
|
nodeLookAt(sun, 0, 0, 0)
|
|
|
|
local camera = nodeNew()
|
|
nodeSetPosition(camera, 0, 2, 7)
|
|
nodeLookAt(camera, 0, 0, 0)
|
|
cameraSet(camera)
|
|
cameraSetPerspective(60, 0.1, 100)
|
|
|
|
|
|
function onInputPressed(what)
|
|
if what == SWITCH_LEFT then
|
|
turnLeft = true
|
|
elseif what == SWITCH_RIGHT then
|
|
turnRight = true
|
|
elseif what == SWITCH_UP then
|
|
tiltUp = true
|
|
elseif what == SWITCH_DOWN then
|
|
tiltDown = true
|
|
end
|
|
end
|
|
|
|
|
|
function onInputReleased(what)
|
|
if what == SWITCH_LEFT then
|
|
turnLeft = false
|
|
elseif what == SWITCH_RIGHT then
|
|
turnRight = false
|
|
elseif what == SWITCH_UP then
|
|
tiltUp = false
|
|
elseif what == SWITCH_DOWN then
|
|
tiltDown = false
|
|
end
|
|
end
|
|
|
|
|
|
function onOverlayUpdate()
|
|
if turnLeft then
|
|
nodeRotate(box, 0, -1.5, 0)
|
|
end
|
|
if turnRight then
|
|
nodeRotate(box, 0, 1.5, 0)
|
|
end
|
|
if tiltUp then
|
|
nodeRotate(box, -1.5, 0, 0)
|
|
end
|
|
if tiltDown then
|
|
nodeRotate(box, 1.5, 0, 0)
|
|
end
|
|
|
|
local pitch, yaw = nodeGetRotation(box)
|
|
|
|
overlayClear()
|
|
overlayPrint(2, 2, "Arrow keys turn the box.")
|
|
overlayPrint(2, 4, "yaw " .. math.floor(yaw) .. " pitch " .. math.floor(pitch))
|
|
return OVERLAY_UPDATED
|
|
end
|