电晕重力毛刺

时间:2016-11-26 00:16:13

标签: lua corona gravity

我正在使用使用物理引擎的Corona SDK进行游戏,并且遇到了一个非常烦人的故障:每当我击中小行星并按下后退按钮时,再次按下播放,绿色家伙的跳跃值会更高。

我会感激任何帮助!!

这是我的代码:

主档案:

local Physics = require("physics")
Physics.start()


centerX = display.contentCenterX
centerY = display.contentCenterY



myScene = require("scene")
myHero = require("hero")
myGoomba = require("badguy")
myButtons = require("buttons")
myMenu = require("mainmenu")


myMenu.drawMainMenu()
playButton:addEventListener( "tap", myMenu.play )

的MainMenu:

local mainmenu = {}

local Physics = require("physics")
Physics.start()


function mainmenu.drawMainMenu()

    menuTheme = audio.loadStream("Music/menuTheme.ogg")
    menuThemeChannel = audio.play( menuTheme, { channel=1, loops=-1, fadein=3000 } )

    background = display.newImage("menuBackground.png")
    background.x = display.contentCenterX
    background.y = display.contentCenterY
    background:scale(1.2, 1.2)

    playButton = display.newImage("playButton.png")
    playButton.x = display.contentCenterX
    playButton.y = display.contentCenterY - 75
    playButton:scale( .3, .3 )


end


function mainmenu.play()
    print("mainmenu - tap registered, preparing to load game..")

    audio.stop(1)

    myScene.sayHello()
    myScene.drawScene()


    myHero.sayHello()
    myHero.drawHero() 



    myGoomba.hello()
    myGoomba.drawBadGuy()


    myButtons.sayHello()
    myButtons.drawButtons()


    myGoomba.move()


    gameTheme = audio.loadStream("Music/playTheme.ogg")
    gameThemeChannel = audio.play( gameTheme, { channel=2, loops=-1, fadein=0 } )


    jumpButton:addEventListener("tap", myButtons.jump)
    backButton:addEventListener("tap", myButtons.goBack)


end



function mainmenu.sayHello()
    print("mainmenu - Hello....")
end


return mailmen

按钮:

local buttons = {}

local Physics = require("physics")
Physics.start()


function buttons.drawButtons()
    jumpButton = display.newImage( "button.png")
    jumpButton.x = 473
    jumpButton.y = 305
    jumpButton:scale( .2, .7 )

    slideButton = display.newImage("button.png")
    slideButton.x = 5
    slideButton.y = 305
    slideButton:scale(.2, .7)

    backButton = display.newImage("backButton.png")
    backButton.x = display.contentCenterX - 245
    backButton.y = display.contentCenterY - 100
    backButton:scale(.11, .11)

end

function buttons.jump()

    --work on decreasing air time by increasing gravity...
    instance2:applyLinearImpulse(0, -0.12, instance2.x, instance2.y)
    --Applying 0 force in the X direction and -0.12 in the Y direction. Y is negative because 
    --down is considered positive by the physics engine.
    --Apply force to the center of the green guy, hence instance.x & instance.y


end


function buttons.goBack()
    print("buttons - loading main menu...")
    audio.stop(2)
    myMenu.drawMainMenu()
    --reset gravity and jump-impulse values here

end


function buttons.sayHello()
    print("buttons - Hello....")
end


return buttons

英雄:

local hero = {}

local Physics = require("physics")
Physics.start()


function hero.drawHero()

    print("hero - loading hero...")

    greenGuysheet = graphics.newImageSheet( "greenman.png", { width=128, height=128, numFrames=15 } )

    -- play 15 frames every 500 ms
    instance2 = display.newSprite( greenGuysheet, {start=1, count=15, time=500 } )
    instance2.name = "greenGuy"
    Physics.addBody(instance2, "dynamic", {radius = 20, bounce = 0})
    instance2.x =100
    instance2.y = 260   
    instance2.gravityScale = 2.5

    instance2:play()

end





function hero.sayHello()
    print("hero - Hello....")
end


return hero

1 个答案:

答案 0 :(得分:2)

您好像不使用composer模块。建议使用它来管理场景。在教程Introducing the Composer API中阅读有关它的更多信息。

我不确定,但似乎你正在添加事件监听器

jumpButton:addEventListener("tap", myButtons.jump)
backButton:addEventListener("tap", myButtons.goBack)

每次调用mainmenu.play函数时。返回游戏并点击跳转按钮后,会调用两次侦听器。因此,在转到菜单或仅添加一次点击侦听器之前,您需要删除点击侦听器。阅读有关Corona documentation上的事件监听器的更多信息。