| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- scene = PhysicsScene(0, Vector3(200, 200, 200))
- ground = ScenePrimitive(ScenePrimitive.TYPE_PLANE, 10, 10)
- ground:loadTexture("Resources/green_texture.png")
- scene:addPhysicsChild(ground, 6, 0)
- for i = 1, 1 do
- local box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 0.8, 0.8, 0.8)
- box:loadTexture("Resources/pink_texture.png")
- box:Roll(-45 + math.random() % 90)
- box:Pitch(-45 + math.random() % 90)
- box:setPosition(-2 + math.random() % 4, i * 0.5, -2 + math.random() % 4)
- scene:addPhysicsChild(box, 0, 1)
- end
- player = ScenePrimitive(ScenePrimitive.TYPE_BOX, 0.5, 1, 0.5)
- player:loadTexture("Resources/pink_texture.png")
- player:setColor(1, 1, 0, 1)
- player:setPosition(2, 1, 2)
- playerController = scene:addCharacterChild(player, 10, 1, 0.5)
- local walkSpeed = 0
- local rotateSpeed = 0
- local playerDirection = 0
- testBox = ScenePrimitive(ScenePrimitive.TYPE_BOX, 2, 2, 2)
- testBox:loadTexture("Resources/pink_texture.png")
- testBox:setColor(0.3, 0.5, 1, 0.4)
- testBox:setPosition(2,1,-2)
- scene:addCollisionChild(testBox, 0)
-
- hud = Scene(Scene.SCENE_2D_TOPLEFT)
- onGroundLabel = SceneLabel("Arrow keys to control, spacebar to jump, press R to reset", 16)
- onGroundLabel:setAnchorPoint(Vector3(-1, -1, 0))
- onGroundLabel:setPosition(0,0)
- hud:addChild(onGroundLabel)
- onGroundLabel = SceneLabel("On Ground:", 16)
- onGroundLabel:setAnchorPoint(Vector3(-1, -1, 0))
- onGroundLabel:setPosition(0, 32)
- hud:addChild(onGroundLabel)
- scene:getDefaultCamera():setPosition(7, 7, 7)
- scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))
- function onKeyDown(keyCode)
- if keyCode == KEY_r then
- playerController:warpCharacter(Vector3(2, 1, 2))
- elseif keyCode == KEY_UP then
- walkSpeed = 0.05
- elseif keyCode == KEY_DOWN then
- walkSpeed = -0.05
- elseif keyCode == KEY_LEFT then
- rotateSpeed = 3
- elseif keyCode == KEY_RIGHT then
- rotateSpeed = -3
- elseif keyCode == KEY_SPACE then
- playerController:jump()
- end
- end
- function onKeyUp(keyCode)
- if keyCode == KEY_DOWN or keyCode == KEY_UP then
- walkSpeed = 0
- elseif keyCode == KEY_RIGHT or keyCode == KEY_LEFT then
- rotateSpeed = 0
- end
- end
- function Update(elapsed)
- playerDirection = playerDirection + rotateSpeed * elapsed
-
- player:setYaw(playerDirection * (180 / math.pi))
- playerController:setWalkDirection(Vector3(walkSpeed * math.cos(playerDirection), 0, walkSpeed * math.sin(-playerDirection)))
-
- if playerController:onGround() then
- onGroundLabel:setText("On Ground: YES")
- else
- onGroundLabel:setText("On Ground: NO")
- end
-
- res = scene:testCollision(player, testBox)
- if res.collided then
- testBox:setColor(1, 1, 0, 0.5)
- else
- testBox:setColor(0, 1, 1, 0.5)
- end
- end
|