2016-03-23 21 views
0

私は、プレイヤーが走り回ってジャンプしたり、弾丸でそれらを殺すことで障害物を乗り越えて生き残る、コロナSDKでゲームを作ろうとしています。問題は、プレイヤーが弾を発射してもゲームが終了することです。しかし、プレイヤーが障害物に衝突した場合にのみ終了する必要があります。 これまでのコードです!コロナラボでオブジェクトを衝突させる方法

--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 

答えて

0

あなたが言ったことはかなり曖昧です。プレイヤーが弾を発砲するたびにゲームが終了しますか?また、ストーリーボードからコンポーザーへの移行を検討する必要があります。

+0

あなたの配慮ありがとうございました。はい、プレイヤーが弾を撃つとすぐゲームが終了します! –

関連する問題