⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simprag.lua

📁 使用stl技术,(还没看,是听说的)
💻 LUA
字号:
-- Set up a scene to demo the engine
------------------------------------

-- Function for adding things to the scene
function triggerScene( )
   
end

-- Create a new step
function createStep( )
    newObject = objects:createObject( objects:getNextUniqueName( ), "step" )
    newObject:getEntity( ):setAllMaterials( "plank" )
 
    return newObject
end

-- Function to update the scene
function updateScene( time )    
   
end

-- Function to go forward
function doForward( )

end

-- Function to go backward
function doBackward( )

end

-- Function to go left
function doLeft( )

end

-- Function to go right
function doRight( )

end

-- Function to go forward
function doForward( )

end

-- Function to create a grunt
function createGrunt( x, y, z )
   head = objects:createObject( objects:getNextUniqueName( ), "head" )
   body = objects:createObject( objects:getNextUniqueName( ), "body" )
   lleg1 = objects:createObject( objects:getNextUniqueName( ), "leg" )
   lleg2 = objects:createObject( objects:getNextUniqueName( ), "leg" )
   rleg1 = objects:createObject( objects:getNextUniqueName( ), "leg" )
   rleg2 = objects:createObject( objects:getNextUniqueName( ), "leg" )
   larm1 = objects:createObject( objects:getNextUniqueName( ), "arm" )
   larm2 = objects:createObject( objects:getNextUniqueName( ), "arm" )
   rarm1 = objects:createObject( objects:getNextUniqueName( ), "arm" )
   rarm2 = objects:createObject( objects:getNextUniqueName( ), "arm" )

   -- Show how to link back to your own app
   demo:addReactor( body )
   demo:addReactor( head )
   demo:addReactor( rleg2 )
   demo:addReactor( lleg2 )
  
   head:setPosition( vector3.new( vector3, x, y + 4.5, z ) )
   body:setPosition( vector3.new( vector3, x, y, z )	 )
   lleg1:setPosition( vector3.new( vector3, x + 1, y - 4.3, z ) )
   lleg2:setPosition( vector3.new( vector3, x + 1, y - 7.6, z ) )
   rleg1:setPosition( vector3.new( vector3, x - 1, y - 4.3, z ) )
   rleg2:setPosition( vector3.new( vector3, x - 1, y - 7.6, z ) )
   larm1:setPosition( vector3.new( vector3, x + 3.3, y + 1.5, z ) )
   larm1:rotate( vector3.new( vector3,  0, 0, 1 ), 90 ) 
   larm2:setPosition( vector3.new( vector3, x + 6.6, y + 1.5, z ) )
   larm2:rotate( vector3.new( vector3, 0, 0, 1 ), 90 ) 
   rarm1:setPosition( vector3.new( vector3, x - 3.3, y + 1.5, z ) )
   rarm1:rotate( vector3.new( vector3, 0, 0, 1 ), 90 ) 
   rarm2:setPosition( vector3.new( vector3, x - 6.6, y + 1.5, z ) )
   rarm2:rotate( vector3.new( vector3, 0, 0, 1 ), 90 )

   bh = phys:createJoint( joint.JT_BALL, "bh"..numGrunts, body:getPhysics( ), head:getPhysics( ) )
   bh:setAnchorPosition( x, y + 3, z )

   bll = phys:createJoint( joint.JT_BALL, "bll"..numGrunts, body:getPhysics( ), lleg1:getPhysics( ) )
   bll:setAnchorPosition( x + 1, y - 2.6, z )
   bll2 = phys:createJoint( joint.JT_HINGE, "bll2"..numGrunts, lleg2:getPhysics( ), lleg1:getPhysics( ) )
   bll2:setAnchorPosition( x + 1, y - 5.95, z )
   bll2:setAxes( vector3.new( vector3, 1, 0, 0 ), vector3.new( vector3, 0, 0, 0 ) )

   brl = phys:createJoint( joint.JT_BALL, "brl"..numGrunts, body:getPhysics( ), rleg1:getPhysics( ) )
   brl:setAnchorPosition( x - 1, y - 2.6, z )
   brl2 = phys:createJoint( joint.JT_HINGE, "brl2"..numGrunts, rleg2:getPhysics( ), rleg1:getPhysics( ) )
   brl2:setAnchorPosition( x - 1, y - 5.95, z )
   brl2:setAxes( vector3.new( vector3, 1, 0, 0 ), vector3.new( vector3, 0, 0, 0 ) )

   bla = phys:createJoint( joint.JT_BALL, "bla"..numGrunts, body:getPhysics( ), larm1:getPhysics( ) )
   bla:setAnchorPosition( x + 1.6, y + 1.5, z )
   bla2 = phys:createJoint( joint.JT_HINGE, "bla2"..numGrunts, larm2:getPhysics( ), larm1:getPhysics( ) )
   bla2:setAnchorPosition( x + 4.95, y + 1.5, z )
   bla2:setAxes( vector3.new( vector3, 0, 1, 0 ), vector3.new( vector3, 0, 0, 0 ) )

   bra = phys:createJoint( joint.JT_BALL, "bra"..numGrunts, body:getPhysics( ), rarm1:getPhysics( ) )
   bra:setAnchorPosition( x - 1.6, y + 1.5, z )
   bra2 = phys:createJoint( joint.JT_HINGE, "bra2"..numGrunts, rarm2:getPhysics( ), rarm1:getPhysics( ) )
   bra2:setAnchorPosition( x - 4.95, y + 1.5, z )
   bra2:setAxes( vector3.new( vector3, 0, 1, 0 ), vector3.new( vector3, 0, 0, 0 ) )

   numGrunts = numGrunts + 1
end

-- Function to setup a scene
function resetScene( )
    -- Position camera
    camera:setPosition( 0, 10, 100 )
  
    -- Reset object pool
    objects:clearPool( )
    -- Clear the physics
    phys:reset( )
	
    -- Setup a "floor" object
    floor = objects:createObject( "theFloor", "floor" )
    floor:getEntity( ):setAllMaterials( "floor" )
    floor:setPosition( vector3.new( vector3, 0, 0, 0 ) )
    -- Make sure it's not being dynamcially updated
    p = floor:getPhysics( )
    p:setDynamicsEnabled(false,false)
   
    -- Look at the floor
    camera:lookAt( floor )
    
    -- Real gravity
    phys:setGravity( 0, -20, 0 )
   
    -- Make the scene look a little prettier
    graph:setAmbientLight( 0.8, 0.8, 0.8 )
    graph:setSkyBox( true, "background", 7000, true )
    graph:setFog( graphicsSystem.FM_EXP,
                  colour.new( colour, 1.0, 1.0, 1.0, 1.0 ), 0.005, 0, 1 )

    -- Make steps
    for step = 0, 15 do
       newStep = createStep( )
       newStep:setPosition( vector3.new( vector3, 0, step * 2, step * -2 ) )
       newStep:getPhysics( ):setDynamicsEnabled( false, false )
    end

    -- Get our grunt on
    createGrunt( 0, 50, 20 )
    createGrunt( 15, 50, 20 )
    createGrunt( -15, 50, 20 )  

    createGrunt( 0, 70, 20 )
    createGrunt( 15, 70, 20 )
    createGrunt( -15, 70, 20 )     
 end

numGrunts = 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -