2016-03-23 19 views
0

Bir oyuncunun engellerin üzerinden geçerek ya da mermiler kullanarak öldürerek engellerin üzerinden geçtiği Corona SDK'da oyun oynamaya çalışıyorum. Sorun, oyuncunun mermiyi ateşlemesi durumunda bile oyunun bitmesidir. Ancak oyuncu sadece engellerle çarpışırsa bitmelidir. Bu benim kodum bugüne kadar !!corona laboratuarlarında nesneleri nasıl çarpıştıralım

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

cevap

0

Belirli bir soru sormanız gerekiyor, söyledikleriniz oldukça belirsiz. Oyuncu mermiyi her ateş ettiğinde oyun biter mi? Ayrıca, film şeridinden besteciye geçiş yapmayı düşünmelisiniz.

+0

İlginiz için teşekkür ederiz .. Oyuncu mermiyi ateş eder etmez, oyun biter! –

İlgili konular