2016-03-23 5 views
0

Ich versuche ein Spiel in Corona SDK, wo ein Spieler läuft und über Hindernisse durch entweder über sie springen oder tötet sie mit Kugeln. Das Problem ist, dass das Spiel endet, selbst wenn der Spieler die Kugel abfeuert. Aber es sollte nur vorbei sein, wenn der Spieler mit den Hindernissen kollidiert. Das ist mein Code bis jetzt !!wie kollidiere ich Objekte in Corona Labs

--local screen_adjustment = 1 
local physics = require "physics" 
physics.start() 

local storyboard = require ("storyboard") 
local scene = storyboard.newScene() 


function scene:createScene(event) 

local screenGroup=self.view 

background=display.newImage("rsz_islands1-background-animation.png") 
background:setReferencePoint(display.BottomLeftReferencePoint) 
background.x=-50 
background.y=330 
background.speed=math.random(2,6) 
screenGroup:insert(background) 

background1=display.newImage("rsz_islands1-background-animation.png") 
background1:setReferencePoint(display.BottomLeftReferencePoint) 
background1.x=500 
background1.y=330 
background1.speed=math.random(2,6) 
screenGroup:insert(background1) 

rightArrow=display.newImageRect("right_arrow.png",50,100) 
rightArrow:setReferencePoint(display.BottomLeftReferencePoint) 
rightArrow.x=370 
rightArrow.y=290 
screenGroup:insert(rightArrow) 


upArrow=display.newImageRect("up_Arrow.png",100,50) 
upArrow:setReferencePoint(display.BottomLeftReferencePoint) 
upArrow.x=250 
upArrow.y=240 
screenGroup:insert(upArrow) 



stone=display.newImageRect("stone.png",100,50) 
stone:setReferencePoint(display.BottomLeftReferencePoint) 
stone.x=math.random(500,1500) 
stone.y=280 
stone.speed=math.random(2,6) 
physics.addBody(stone,"static",{bounce=0,friction=0,}) 
screenGroup:insert(stone) 

base = display.newRect(0,0,450,3) 
base.x=-50 
base.y=282 
base:setReferencePoint(display.BottomLeftReferencePoint) 
base:setFillColor(255,255,255) 
--physics.addBody(base,"static",{bounce=0.1,friction=0.1}) 
physics.addBody(base,"static",{bounce=0,friction=1.0,density=1.0}) 
screenGroup:insert(base) 
base.myName="base1" 


local sheetData = { 
width=65, 
height=75, 
numFrames=4, 
sheetContentWidth=130, 
sheetContentHeight=150 
} 

local mySprite = graphics.newImageSheet("imageSheet.png",sheetData) 

local sequenceData = { 
name="normalRun", 
frames={1,2,3,4}, 
time=500, 
loopcount=0 
} 

animation = display.newSprite(mySprite,sequenceData) 
if(animation.x<50) then 
animation.x=50 
end 
animation.y=245 


physics.addBody(animation,{bounce=0.3,friction=1.0,density=1.0,radius=35}) 
animation:play() 
screenGroup:insert(animation) 
animation.myName="animation1" 




local sheetTigerData = { 
width=100, 
height=57, 
numFrames=8, 
sheetContentWidth=400, 
sheetContentHeight=120 
} 

local myTigerSprite 
graphics.newImageSheet("tigerImageSheet.png",sheetTigerData) 

local sequenceTigerData = { 
name="normalRun", 
frames={1,2,3,4,5,6,7,8}, 
time=500, 
loopcount=0 
} 

tigeranimation = display.newSprite(myTigerSprite,sequenceTigerData) 
--tigeranimation.x=700 
tigeranimation.x=math.random(500,1500) 
tigeranimation.y=255 
tigeranimation.speed=math.random(2,6) 
physics.addBody(tigeranimation,"static",{bounce=0,friction=.2}) 
tigeranimation:play() 
screenGroup:insert(tigeranimation) 


local sheetBirdData = { 
width=60, 
height=40, 
numFrames=6, 
sheetContentWidth=180, 
sheetContentHeight=80 
} 

local myBirdSprite = 
graphics.newImageSheet("birdimagesheet.png",sheetBirdData) 

local sequenceBirdData = { 
name="normalRun", 
frames={1,2,3,4,5,6}, 
time=500, 
loopcount=0 
} 

birdanimation = display.newSprite(myBirdSprite,sequenceBirdData) 
birdanimation.x=math.random(500,2500) 
birdanimation.y=math.random(100,200) 
birdanimation.speed=2 
birdanimation.initY=birdanimation.y 
birdanimation.amp=50 
birdanimation.angle=math.random(1,360) 
physics.addBody(birdanimation,"static",{friction=.2,bounce=0}) 
birdanimation:play() 
screenGroup:insert(birdanimation) 

local sheetCatData = { 
width=100, 
height=48, 
numFrames=8, 
sheetContentWidth=200, 
sheetContentHeight=200 
} 

local myCatSprite = 
graphics.newImageSheet("rsz_runningcat.png",sheetCatData) 

local sequenceCatData = { 
name="normalRun", 
frames={2,1,4,3,6,5,8,7}, 
time=500, 
loopcount=0 
} 

catanimation = display.newSprite(myCatSprite,sequenceCatData) 
catanimation.x=tigeranimation.x+math.random(110,1500) 
catanimation.y=255 
catanimation.speed=math.random(2,6) 
physics.addBody(catanimation,"static",{bounce=0,friction=.2}) 
catanimation:play() 
screenGroup:insert(catanimation) 



gameSound=audio.loadStream("gamesound.mp3") 
audio.play(gameSound) 

gunshot=audio.loadStream("gunshot3.mp3") 
end 


function scrollBack(self,event) 
if self.x<-590 then 
self.x=500 
audio.play(gameSound) 
else 
    self.x=self.x-3 
    audio.play(gameSound) 
end 
end 

function moveTiger(self,event) 
if self.x<-100 then 
self.x=math.random(1500,4000) 
self.y=255 
self.speed=math.random(3,6) 
audio.play(gameSound) 
else 
    self.x=self.x-self.speed 
    audio.play(gameSound) 
end 
end 

function moveCat(self,event) 
if self.x<-100 then 
self.x=tigeranimation.x+math.random(800,2000) 
self.y=255 
self.speed=math.random(3,6) 
else 
    self.x=self.x-self.speed 
end 
end 


function moveStone(self,event) 
if self.x<-100 then 
self.x=math.random(1000,5000) 
self.y=280 
self.speed=math.random(3,6) 
else 
    self.x=self.x-self.speed 
end 
end 

function moveBird(self,event) 
if self.x<-100 then 
self.x=math.random(500,2500) 
--self.x=300 
self.y=math.random(100,200) 
self.speed=2 
self.amp=math.random(25,75) 
self.angle=math.random(1,360) 
--self.y=280 
--self.speed=math.random(3,6) 
else 
    self.x=self.x-self.speed 
    self.angle=self.angle+.1 
    self.y=self.amp*math.sin(self.angle)+self.initY 
end 
end 

function fireLasers() 
blaster = display.newImageRect("bullet.png", 40, 15) 
physics.addBody(blaster,"dynamic") 
blaster.x = animation.x+50 
blaster.y = animation.y-10 
--blaster.collided=false 
if(animation.x<50) then 
animation.x=50 
end 
transition.to(blaster, { time=1000, x=500}) 
audio.play(gunshot) 

end 


function handleFireButton(event) 
if (event.phase == "began") then 
    -- Fire the weapon 
    fireLasers() 
elseif (event.phase == "ended") then 
    -- Stop firing the weapon 
    fireLasers() 
end 
return true 
end 
positionInAir = false 

function jump(event) 
if(event.phase == "began" and positionInAir==false) then 

    --playerInAir = true 
    --animation:setLinearVelocity(0, 1) 
    animation:applyForce(0,-1000,animation.x,animation.y) 
    positionInAir=true 
    --physics.addBody(animation,"dynamic") 
    --print("touch") 
end 
return true 
end 




function onCollision(event) 
if(event.object1.myName == "base1" and event.object2.myName == "animation1")  
then 
    positionInAir = false; 
    -- base:removeSelf() 
end 
end 

local function onManCollide(event) 

if (event.phase == "began" ) then 
storyboard.gotoScene("restart","fade",400) 
audio.stop() 
end 
end 




function scene:enterScene(event) 

background.enterFrame=scrollBack 
Runtime:addEventListener("enterFrame",background) 

background1.enterFrame=scrollBack 
Runtime:addEventListener("enterFrame",background1) 

stone.enterFrame=moveStone 
Runtime:addEventListener("enterFrame",stone) 

tigeranimation.enterFrame=moveTiger 
Runtime:addEventListener("enterFrame",tigeranimation) 

birdanimation.enterFrame=moveBird 
Runtime:addEventListener("enterFrame",birdanimation) 

catanimation.enterFrame=moveCat 
Runtime:addEventListener("enterFrame",catanimation) 

animation.collision=onManCollide 
animation:addEventListener("collision",onManCollide) 


rightArrow:addEventListener("touch", handleFireButton) 
--Runtime:addEventListener("touch", handleFireButton) 
--Runtime:addEventListener("enterFrame", handleFireButton) 
--upArrow:addEventListener("touch", jump) 

--Runtime:addEventListener("collision", onCollision) 
--Runtime:addEventListener("touch", onScreenTouch) 

--rightArrow:addEventListener("touch", handleFireButton) 
end 


function scene:exitScene(event) 

Runtime:removeEventListener("enterFrame",background) 
Runtime:removeEventListener("enterFrame",background1) 
Runtime:removeEventListener("enterFrame",stone) 
Runtime:removeEventListener("enterFrame",tigeranimation) 
Runtime:removeEventListener("enterFrame",birdanimation) 
Runtime:removeEventListener("enterFrame",catanimation) 
Runtime:removeEventListener("enterFrame",onManCollide) 
rightArrow:removeEventListener("touch", handleFireButton) 
upArrow:removeEventListener("touch", jump) 
Runtime:removeEventListener("collision", onCollision) 


end 

function scene:destroyScene(event) 

end 
--local myGroup=display.newGroup() 

--physics.addBody(background,"static",{bounce=0.1,friction=0.9}) 


--physics.addBody(background1,"static",{ bounce=0.1,friction=0.9}) 

scene:addEventListener("createScene",scene) 
scene:addEventListener("enterScene",scene) 
scene:addEventListener("exitScene",scene) 
scene:addEventListener("destroyScene",scene) 

return scene 

Antwort

0

Sie müssen eine bestimmte Frage stellen, was Sie gesagt haben, ist ziemlich vage. Wird das Spiel jedes Mal beendet, wenn der Spieler die Kugel abfeuert? Außerdem sollten Sie in Betracht ziehen, vom Storyboard zum Composer zu migrieren.

+0

Danke für Ihre Überlegung .. Ja, sobald der Spieler die Kugel feuert, endet das Spiel! –