Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fullH = display.viewableContentHeight
- system.activate( "multitouch" )
- local physics = require "physics"
- physics.start()
- physics.setGravity( 0, 0 )
- physics.setDrawMode( "hybrid" )
- --[[
- if system.getInfo("environment") == "simulator" then
- local rcorona = require("rcorona")
- rcorona.startServer(8181)
- end
- --]]
- halfW = display.viewableContentWidth * 0.5
- halfH = display.viewableContentHeight * 0.5
- --local background = display.newImage( "Background Placeholder.png" )
- --background:setReferencePoint ( display.TopCenterReferencePoint )
- --background.x = halfW
- local stage = display.getCurrentStage()
- local zombies = display.newGroup()
- for i = 1, fullH do
- zombies:insert( display.newGroup() )
- end
- zombieCollisionFilter = { categoryBits = 1, maskBits = 2 }
- zombieCollisionFilter3 = { categoryBits = 4, maskBits = 4 }
- -- Spawner
- local speedScalar = 5
- local sSpawn = function(event)
- -- local sheetInfo = require("Zombie Placeholder")
- -- local zombieSheet = graphics.newImageSheet( "Zombie Placeholder.png", sheetInfo:getSheet() )
- -- local sequenceData = { name = zombieWalk, start = 1, count = 8, time = 1500 }
- -- local s = display.newSprite( zombieSheet, sequenceData )
- local s = display.newRect( 0, 0, 112, 187 )
- s:setReferencePoint ( display.BottomCenterReferencePoint )
- s.box = display.newRect( s.x, s.y, 50, 5 )
- s.box:setReferencePoint ( display.BottomCenterReferencePoint )
- s.box.isVisible = false
- s.xScale = .07
- s.yScale = .07
- s.box:translate( halfW + math.random( -80, 80 ), halfH - 260 )
- -- physics.addBody( s, "dynamic", { density = 0, friction = 0, bounce = 0, --[[ filter = zombieCollisionFilter --]] } )
- physics.addBody( s.box, "dynamic", { density = 0, friction = 0, bounce = 0.0, filter = zombieCollisionFilter3} )
- s.box.isFixedRotation = true
- s.box:setLinearVelocity( 0 , 7 * speedScalar )
- -- s:play()
- s.count = event.count
- s.name = "zombie"
- function s.box:resume ( event )
- timer.performWithDelay( 1000, function() s.box:setLinearVelocity( 0, 7 * speedScalar ) end )
- end
- function s:touch ( event )
- if event.phase == "ended" then
- timer.performWithDelay( 50, function() s.box:applyLinearImpulse( 0, -0.005, s.box.x, s.box.y ) end )
- timer.performWithDelay( 2000, function() s.box:setLinearVelocity( 0, 7 * speedScalar ) print ("stopping", s.box ) end )
- end
- -- return true
- end
- function s:enterFrame ( event )
- local object = s
- -- print (object, object.box, object.box.y)
- s.x = s.box.x
- s.y = s.box.y
- if object.box.y >= 1 and object.box.y <= fullH then
- zombies[ math.floor( (object.box.y) ) ]:insert( object )
- -- print "sorted"
- end
- ScalePercent = ( s.y ) / 8 + 4
- s.xScale = 0.015 * ScalePercent
- s.yScale = 0.015 * ScalePercent
- local col = 255 * math.min( s.y, fullH ) / fullH
- s:setFillColor( col )
- end
- lower = {}
- upper = {}
- function s.box:collision ( event )
- if event.target.y >= event.other.y then
- lower = event.target
- upper = event.other
- elseif event.target.y < event.other.y then
- lower = event.other
- upper = event.target
- end
- lowerXV, lowerYV = lower:getLinearVelocity()
- event.target:resume()
- event.other:resume()
- if event.phase == "began" then
- upper:setLinearVelocity( 0, lowerYV * math.random( 0.8, 1.1 ) )
- lower:setLinearVelocity( 0, lowerYV * 0.5 )
- end
- return true
- end
- s.box:addEventListener( "collision", s.box )
- Runtime:addEventListener( "enterFrame", s )
- s:addEventListener( "touch" )
- return s
- end
- function spawn ( event )
- zombies:insert( 1, sSpawn( event ) )
- end
- timer.performWithDelay( 150, spawn, 0 )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement