Сейчас 04:08:35 Пятница, 29 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Урок] О типе Region
[DUОS]Дата: Среда, 01 Февраля 2012, 22:42:15 | Сообщение # 1
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Сегодня нас ждёт очень интересный практикум, связанный с типом, которого в триггерах нет. Это тип region.
region - тип, который позволяет создавать непрямоугольные области, разбросанные хоть по всей карте. Тип достаточно лёгок в освоении, однако есть несколько вещей, которые требуется запомнить.
Функций, связанных с типом region, в common.j немного и надо знать их особенности.
Создаётся такой регион через функцию CreateRegion().
Для построения сложного региона используются функции вида RegionAddCell и RegionAddRect. Разберём каждую.

RegionAddCell принимает в качестве параметров уже созданный регион и координаты x и y. Казалось бы, эта функция добавляет точку. Но ничего подобного! Она добавляет в регион прямоугольник размером 32х32 с центром в этой точке. Будьте внимательны и учитывайте это, чтобы избежать ошибок при построении региона.
RegionAddRect принимает в качестве параметров уже созданный регион и прямоугольную область, которая в GUI называется Область, а в Jass носит название rect. Здесь никаких ухищрений нет.

Не забудьте, что region как и любой тип, наследующийся от handle, надо обнулять и можно удалять при помощи функции RemoveRegion. Конечно же, можно удалить отдельные Cell'ы или отдельный рект, используя функции RegionClearCell и RegionClearRect соответственно.

Теперь о том, как можно использовать этот тип для оптимизации своего кода в событиях триггеров.
TriggerRegisterEnterRegion может отловить вход в регион и сразу же отфильтровать всех ненужных юнитов.
TriggerRegisterLeaveRegion может отловить выход из региона и сразу же отфильтровать всех ненужных юнитов.

Ещё одно преимущество регионов над ректами заключается в том, что их событийно можно отловить, используя GetTriggeringRegion().

Этого багажа знаний вам должно хватить для построения нестандартных непрямоугольных областей.
Вопросы принимаются в этой теме.

Добавлено (01 Февраль 2012, 22:42:15)
---------------------------------------------
Ну давайте обсудим, что ли.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)


Сообщение отредактировал [DUОS] - Четверг, 02 Февраля 2012, 18:50:11
 

DiabfallДата: Среда, 01 Февраля 2012, 22:49:47 | Сообщение # 2
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote
region - тип, который позволяет создавать непрямоугольные области.

Можно сделать окружность?
 

[DUОS]Дата: Среда, 01 Февраля 2012, 22:50:20 | Сообщение # 3
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Diabfall,
Да, циклом точек)


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

DiabfallДата: Среда, 01 Февраля 2012, 23:05:15 | Сообщение # 4
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote
Да, циклом точек

Немного не понял.) Начнем с простого. Как сделать треугольник или пятиугольник? Если не сложно, сделай пример(код).


Сообщение отредактировал Diabfall - Среда, 01 Февраля 2012, 23:11:53
 

SirNikolasДата: Четверг, 02 Февраля 2012, 18:33:52 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (|DUОS|)
GetTriggerRegion()
Исправь, пожалуйста.


 

[DUОS]Дата: Четверг, 02 Февраля 2012, 18:50:23 | Сообщение # 6
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (SirNikolas)
Исправь, пожалуйста.

Сделал.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

DiabfallДата: Четверг, 02 Февраля 2012, 19:40:32 | Сообщение # 7
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (Diabfall)
Немного не понял.) Начнем с простого. Как сделать треугольник или пятиугольник? Если не сложно, сделай пример(код).

Всё сам разобрался... Понравилось, что можно делать такие фигуры как круг.

Жаль вар фаталит при попытке использовать глобальный регион. (vjass)


Сообщение отредактировал Diabfall - Четверг, 02 Февраля 2012, 19:41:06
 

SirNikolasДата: Пятница, 03 Февраля 2012, 13:42:51 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Diabfall)
Жаль, вар фаталит при попытке использовать глобальный регион. (vjass)
Опа!


 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz