Плохо! Плохо!:  0
Показано с 1 по 3 из 3

Тема: Анимация воды в ХР

  1. #1
    Хранитель Форума Аватар для Валера
    Информация о пользователе
    Регистрация
    15.04.2008
    Адрес
    Москва
    Сообщений
    14,006
    Записей в дневнике
    3
    Репутация: 166 Добавить или отнять репутацию

    [XP] Анимация воды в ХР

    Анимацию воды в ХР можно сделать по-разному.

    1. Самый простой способ:
    использовать свойство аутотайла ХР анимировать серию квадратов 32х32. Да, он это делает, причем ряд может быть значительно больше четырех. Если из 20 квадратов 3 придется на анимацию, будет не так заметна статичность. Зато для прибоя - статичность в самый раз.

    2. Далее:
    тоже самое с нормальным аутотайлом воды. Он тоже берет более четырех картинок.

    3. Можно использовать 4-й слой - панораму.
    Как ее использовать, описано в теме "Все 3 слоя ХР в дело". Анимируется панорама сменой панорам. Работает прекрасно. Сами устанавливаем скорость. Хорошо еще то, что можно использовать любые картинки. Не обязательно квадратные. Любого размера.

    4. Есть еще способ.
    Довольно экзотический, зато получаем случайные волны на воде. Берем неподвижное изображение воды ( статичное не значит мертвое: сквозь воду может просвечивать дно, камни на дне и т.п. ). Делаем ( находим ) изображение волны - светлая полоска и ставим в ивент. Ивент запускаем в воду и он, двигаясь, периодически изображает волну. Чтобы он не бегал на бережок погреться, есть свои способы. Сделать край берега непроходимым. Пометить воду "землей", где только и будет включаться ивент ( это если воды много ). Пометить берега "землей", при налезании на которую ивент будет делать шаг назад.
    Чтобы не городить огород с берегами, можно просто задать ивентам определенную трассу.
    Когда-то такие волны я пробовал: работает интересно, можно сделать хорошую анимацию волны.

    Можно скомбинировать: на аутотайл наложить ивент. Или еще как-нибудь.

    5. Как сделать анимацию самому?
    Берете фотошоп ( или что там у вас есть ), берете текстуру россыпи камешков. Изменяете цвет на "дно" ( переводите текстуру в голубой тон или покрываете прозрачным голубым слоем ). Это ваша основа.

    Далее ( о, боже! ) делаете сами текстуру. Берете квадрат равный основе. Фон - любой, лучше белый. И наносите на него от балды точки, закорючки, черточки и всякую мелкую ерунду. Сие будет изображать поток воды ( если закорючки темнее голубого ) или некие блики на воде ( если светлее ). Во втором случае - лучше, чтобы было похоже на блики.

    Далее: делаете анимацию. Копируете квадрат с закорючками 3 раза и делаете из них квадрат вдвое больший. Накладываете вашу мазню на основу ( убрав фон ) и двигаете на 2-4 пикселя. Каждый сдвиг - кадр анимации. Пока мазня не сдвинется вся целиком.

    Если у вас поток воды - лучше накрывать его голубым слоем после создания всей анимации. Так будет лучше: так мы можем настраивать тон самой воды, не трогая остальное. А настраивать придется.

    Да, зачем мы удвоили размеры мазни? Чтобы анимацию можно было сделать в любую сторону, даже под углом. Например - под 45 градусов: двигаем от угла мазни до угла.
    Последний раз редактировалось Валера; 31.01.2015 в 03:42.

    Спойлер И как тебе не стыдно-то, а, Валера?:


    Оборона форта: http://rghost.ru/8kLGxFtD2
    Сделать, чтоб все происходило, как я хочу, - вот, собственно, и весь мейкер!
    Адский Рейд: http://rpgmaker.su/vbdownloads.php?d...downloadid=106

  2. #2
    Маститый Аватар для Antberg
    Информация о пользователе
    Регистрация
    14.04.2008
    Сообщений
    1,348
    Записей в дневнике
    3
    Репутация: 52 Добавить или отнять репутацию

    По умолчанию

    Вроде уже кидал, но тем не менее. Смена тайлсета прямо на карте для ХР:

    Код:
    #====================================
    #  Phylomortis Script, Ryethe.  Rewrite: Leon_Westbrooke
    #------------------------------------------------------------------------
    #  Game_Map and Spriteset_Map are aliased
    #  To call $game_map.replace_tileset(x), where x is the ID number of the new tileset.
    #====================================
    
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #  Game_Map
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    class Game_Map
      attr_accessor :new_tileset
      
      alias leon_gm_tileset_setup setup
      
      def setup(map_id)
    	@new_tileset = false
    	leon_gm_tileset_setup(map_id)
      end
      
      def replace_tileset(new_tiles)
    	tileset = $data_tilesets[new_tiles]
    	@tileset_name = tileset.tileset_name
    	@autotile_names = tileset.autotile_names
    	@panorama_name = tileset.panorama_name
    	@panorama_hue = tileset.panorama_hue
    	@fog_name = tileset.fog_name
    	@fog_hue = tileset.fog_hue
    	@fog_opacity = tileset.fog_opacity
    	@fog_blend_type = tileset.fog_blend_type
    	@fog_zoom = tileset.fog_zoom
    	@fog_sx = tileset.fog_sx
    	@fog_sy = tileset.fog_sy
    	@battleback_name = tileset.battleback_name
    	@passages = tileset.passages
    	@priorities = tileset.priorities
    	@terrain_tags = tileset.terrain_tags
    	$game_map.new_tileset = true
      end
    end
    
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #  Spriteset_Map
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    class Spriteset_Map
      
      alias leon_sm_tileset_update update
      
      def update  
    	if $game_map.new_tileset == true
    	  @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
    	  @tilemap.priorities = $game_map.priorities
    	  for i in 0..6
    		autotile_name = $game_map.autotile_names[i]
    		@tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
    	  end
    	  $game_map.new_tileset = false
    	end
    	leon_sm_tileset_update
      end
    end
    В самой игре вызывается через команду "выполнить скрипт", где вводится "$game_map.replace_tileset(1)", где "(1)" это номер набора тайлов в базе данных (как пример). Насколько помню, есть какое-то ограничение, как то - все наборы, прогоняемые через эту команду, должны иметь один и тот-же размер, иначе вылетит. Ну, это не такая большая проблема.

    С помощью этого можно как раз делать анимированные карты, просто "перелистывая" наборы с заданной скоростью через эвент.
    Последний раз редактировалось Antberg; 31.01.2015 в 07:50.

  3. #3
    Познающий Аватар для DeadElf79
    Информация о пользователе
    Регистрация
    09.08.2013
    Сообщений
    276
    Записей в дневнике
    12
    Репутация: 22 Добавить или отнять репутацию

    По умолчанию

    Кину в эту же тему скрипт, о котором писал в дневнике:
    Код:
    # Делает имитацию анимации воды с помощью автоматической
    # смены всех тайлов.
    # Первая цифра - оригинальный ID тайла на карте, все остальные - кадры,
    # на которые он будет заменяться.
    DE79_WATER_TILES=[
      [475,476],
      [494,495],
      [526,494]
    ]
    def de79_water
      for x in 0...$game_map.data.xsize
        for y in 0...$game_map.data.ysize
          z=0
          for row in 0...DE79_WATER_TILES.size
            if $game_map.data[x,y,z]==DE79_WATER_TILES[row][0]
              $game_map.data[x,y,z]=DE79_WATER_TILES[row][1]
              next
            end
            if $game_map.data[x,y,z]==DE79_WATER_TILES[row][1]
              $game_map.data[x,y,z]=DE79_WATER_TILES[row][0]
              next
            end
          end
        end
      end
    end
    Настройка ивента:


    В результате заменяет тайлы с указанным ID на тайлы с другим ID. К сожалению, пока "анимация" состоит из двух кадров, но уже сейчас при хитрой настройке массива DE79_WATER_TILES можно получить анимацию из большего числа кадров.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Анимация воды в ХР