Here is some code to help with confusion based on the questions phrasing.
local sheetData = { width = 64, height = 64, numFrames = 8, sheetContentWidth = 256, sheetContentHeight = 128 } local mySheet = graphics.newImageSheet("Sleepers.png",sheetData) local w,h = display.contentWidth, display.contentHeight local playerAnimation = { name = "sleeper", frames={1,2,3}, time = 2000 } local enemyAnimation = { name = "demon", frames={5,6,7}, time = 500 } local bedAnimation = {name = "exit", frames = {4}, time = 0} local player = display.newSprite( mySheet, playerAnimation ) local enemy = display.newSprite( mySheet, enemyAnimation ) local bed = display.newSprite( mySheet, bedAnimation) local physics = require("physics") physics.start() physics.setGravity(0,0) player.x = w/2 player.y = h/2 physics.addBody(player, {density = 0, friction = 0, bounce = 0}) player.myName = "Player" enemy.x = w+64 enemy.y = h+64 physics.addBody(enemy, "static", {isSensor = true}) bed.x = math.random(64, w-100) bed.y = math.random(64, h-100) physics.addBody(bed,"static", {isSensor = true}) bed.myName = "Bed" --local function spinImage (event) -- transition.to( bed, { rotation = bed.rotation+360, time=3500, onComplete=spinImage} ) --end --spinImage() local function spawnBed() bed.x = math.random(math.random(64,w/4), w-100) bed.y = math.random(math.random(64,h/4), h-100) end local function collision(self, event) if event.phase == "began" then if self.myName == "Player" and event.other.myName == "Bed" then timer.performWithDelay(100, spawnBed, 1) end end end player.collision = collision player:addEventListener("collision") bed.collision = collision bed:addEventListener("collision") function left() enemy.x = -64 enemy.y = math.random(0,h) transition.to(enemy,{time=2000, x=w+64}) enemy:play() end function player:touch( event ) if event.phase == "began" then display.getCurrentStage():setFocus( self, event.id ) self.isFocus = true self.markX = self.x self.markY = self.y elseif event.phase == "moved" then local x = (event.x - event.xStart) + self.markX local y = (event.y - event.yStart) + self.markY self.x, self.y = x,y end return true end player:addEventListener( "touch", player) player:play() timer.performWithDelay(2000,left,0)