Стоп Стрелка Спам - PullRequest
       8

Стоп Стрелка Спам

1 голос
/ 29 марта 2019

Я делаю свою первую игру с Луа в колледже, и у меня трудные времена.Мой персонаж стреляет стрелками без остановки, и я хочу, чтобы у него была задержка, чтобы стрелять по каждой стрелке.

Я пытался создать функции для имитации задержки, но она не работала

local function atkRight()
    system.setTapDelay(10)
    display.remove(char)
    char = display.newImageRect ( "Sprites/archerRight.png", 50, 60)
    char.x = display.contentCenterX
    char.y = display.contentCenterY+50
    physics.addBody (char, "static", { isSensor=false })
    char.myName = "char"

    local arrowRight = display.newImageRect ( "Sprites/arrowRight.png", 50, 5)
    arrowRight.x = display.contentCenterX+40
    arrowRight.y = display.contentCenterY+40
    physics.addBody (arrowRight, "dynamic", { bounce = 0 })
    arrowRight:setLinearVelocity(500, 0)
    arrowRight.gravityScale = 0
    arrowRight.myName = "arrowRight"
end

atkiconRight:addEventListener( "tap", atkRight )

Iесли бы эта функция атаки могла выполняться только каждые 0,5 секунды

1 Ответ

2 голосов
/ 29 марта 2019

Существуют различные способы достижения этого. Возможно, самый простой способ - это обратный вызов вашего события, чтобы проверить время.

https://docs.coronalabs.com/api/library/system/getTimer.html

Сохранение времени выстрела в глобальной переменной. Если выстрел сделан и есть отметка времени предыдущего выстрела, проверяйте и стреляйте только в том случае, если это произошло не менее чем на 0,5 секунды.

Другим способом было бы удалить прослушиватель событий и запустить событие таймера, которое повторно добавит прослушиватель событий через 500 мс. Или у вас есть глобальный флаг, который запрещает стрельбу, и таймер сбрасывает этот флаг каждые 500 мс.

Какой путь решать вам.

...