у меня стоит скрипт на всю клавиатуру, по этому Keys, а не Input. и да, я это писал по памяти, а не копипастил со скрипта, видать не заметил. у меня в скрипте то уже отлично все, кроме скрытия фонарика после менюшки D:
у меня стоит скрипт на всю клавиатуру, по этому Keys, а не Input. и да, я это писал по памяти, а не копипастил со скрипта, видать не заметил. у меня в скрипте то уже отлично все, кроме скрытия фонарика после менюшки D:
Скинь тогда весь код
пришлось отказаться от предложенного тобой обновления спрайта в апдейте, ибо у меня при повороте на 180 градусов, персонаж поворачивается сначала на 90 и потом еще раз на 90 в итоге фонарик отображался не корректно и еще были замечены пары багов с ним, если использовать мув роут.PHP код:
module HB
module FLASHLIGHT
FLASHLIGHT = 1
BUTTOM = Keys::F
ONOFFSE = "Cursor1"
F_SWITCH = 90
end
end
class Spriteset_Map
alias hb_create_flashlight initialize
def initialize
hb_create_flashlight
create_flashlight
end
def create_flashlight
@flashlight = Sprite.new(@viewport1)
@flashlight.opacity = 200
@flashlight.blend_type = 1
@flashlight.z = 297
@flashlight.ox = 150 / 2
@flashlight.oy = 150 / 2
@flashlight.visible = false
end
alias hb_update_flashlight update
def update
hb_update_flashlight
update_flashlight
end
def update_flashlight
return if !@flashlight
return if !$game_switches[HB::FLASHLIGHT::F_SWITCH]
return if !$game_party.has_item?($data_items[HB::FLASHLIGHT::FLASHLIGHT])
if Keys.trigger?(Keys::F) && @flashlight.visible == true
Audio.se_play("Audio/SE/" + HB::FLASHLIGHT::ONOFFSE, 70, 100)
@flashlight.visible = false
elsif Keys.trigger?(Keys::F) && @flashlight.visible == false
Audio.se_play("Audio/SE/" + HB::FLASHLIGHT::ONOFFSE, 70, 100)
@flashlight.visible = true
end
filename = "flashlight_"
filename += $game_player.direction.to_s
@flashlight.bitmap.dispose if @flashlight.bitmap
@flashlight.bitmap = Cache.system(filename)
@flashlight.x = $game_player.screen_x
@flashlight.y = $game_player.screen_y - 16
end
alias hb_dispose_flashlight dispose
def dispose
hb_dispose_flashlight
dispose_flashlight
end
def dispose_flashlight
@flashlight.dispose if @flashlight
end
end
можно также добавить условие на направление, куда смотрит персонаж... ну это ладно
по поводу visible = false. Как вариант предложил Lipton. В $game_map создать переменную @flashlight_visible, а при создании самого спрайта @flashlight.visible = $game_map.flashlight_visible, а в обновление написать:
Спойлер Код:
о, окей, понял, сделал, работает :3
осталось допилить батарейки
а нельзя же сделать так, у меня карта состоит в основном из 6 слоев:
- под персонажем
- над персонажем
- фонарик и тьма(черный слой, только видно что под слоем фонарика)
- еще один слой над персонажем
- тени
- лайты
вот слой отвечающий за тьму, должен лежать именно на этом слое, но так же перекрывать и все слои выше?
просто как я понял при создании эффекта слоя, что виден только свет от фонарика, можно сделать задав координату z слоя фонарика и тьмы на одном уровне
переносить фонарик тоже нельзя, ибо 4 слой должен перекрывать лайты от фонарика, чтобы не было света сквозь стены и тп
может кто помочь с оптимизацией?
Спойлер все работает, но при включенной темноте, фпс не выше 30:
upd: все, исправил, я дурак просто, засунул в апдейт создание битмапа
Последний раз редактировалось HopeBree; 14.10.2015 в 19:05.
зачем тебе постоянно создавать темноту ? Достаточно менять координаты
да я чтоб по 200 раз одно и тоже не писать, ctrl+c ctrl+v и не глянул что сделал
ну и можно добавить условие на направление:
return if @last_player_direction == $game_player.direction
@last_player_direction = $game_player.direction
Кто знает, почему выдает ошибку ?)
Спойлер Код:
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)
Социальные закладки