Unity как изменить размер сетки

Unity предоставляет визуальную сетку в СценеРедактора. Сцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее См. в представлении Словарь, что может помочь точно выровнять GameObjectsОсновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее Посмотреть в Словарь, привязав (переместив) их в ближайшее место на сетке.

Unity предоставляет визуальную сетку в СценеРедактора. Сцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в представлении Словарь
, что может помочь точно выровнять GameObjectsОсновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
Посмотреть в Словарь
, привязав (переместив) их в ближайшее место на сетке.

Тот же вид, отображающий линии сетки вдоль осей x, y и z.

Тот же вид, отображающий линии сетки вдоль осей x, y и z.

Вы можете привязать GameObject к сетке, спроецированной вдоль осей X, Y или Z, несколькими способами:

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

Вы также можете преобразовывать GameObject с шагом, не выравнивая его с линиями сетки. Если вам нужно изменить степень перемещения, поворота или масштабирования, вы можете изменить значения шага привязки.

По умолчанию сетка скрыта, но вы можете сделать ее видимой и переключить ось появляется вдоль. Внешний вид и поведение сетки можно настроить, изменив следующие параметры:

  • размер сетки (отрегулируйте расстояние между линиями).
  • цвет самих линий сетки.
  • Насколько прозрачны или непрозрачны выглядят линии сетки.
  • положение сетки в представлении сценыИнтерактивный взгляд на мир, который вы создаете. Вы используете Scene View для выбора и размещения пейзажей, персонажей, камер, источников света и всех других типов игровых объектов. Подробнее
    Посмотреть в Словарь
    (передвинуть ближе или дальше).

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

Окно сетки и привязки

Вы можете открыть окно Grid and Snap из меню (Edit > Grid and Snap Settings) или с помощью раскрывающегося списка видимости сетки -вниз меню:

  1. В раскрывающемся меню видимости сетки (A) нажмите значок дополнительного меню (B).

    Значок дополнительного меню находится в правом верхнем углу меню.

    Значок дополнительного меню находится в правом верхнем углу меню.
  2. Выберите Edit Grid and Snap Settings (C).

    Настройки сетки и привязки

    Настройки сетки и привязки

Окно Grid and Snap Settings позволяет выполнять следующие действия:

  • Измените размер сетки, используя свойства в разделе World Grid.
  • Используйте Set Position, чтобы переместить сетку к маркеру выбранного игрового объекта (Handle) или вернуться к положению по умолчанию (Reset).
  • Измените значения по умолчанию для перемещения, вращения и масштабирования с шагом в разделе Increment Snap.
  • Переместить выбранные игровые объекты на определенную ось или в ближайшую точку на всех трех осях в разделе Align Selection to Grid .

Примечание. Настройки в окне Grid and Snap являются глобальными для всех видов сцены.

Выравнивание, привязка и поэтапное перемещение

В этом разделе содержится информация о том, как выполнять следующие действия:

  • Выравнивание (расталкивание) по сетке
  • Активация автоматической привязки
  • Перемещение, вращение и масштабирование с шагом

Выравнивание (расталкивание) по сетке

Вы можете выровнять GameObject либо по ближайшей точке сетки на одной оси, либо по всем осям сразу.

Чтобы выровнять GameObject по ближайшей точке сетки для определенной оси:

  1. Откройте окно Grid and Snap одним из способов:
    • В главном меню Unity выберите Edit > Grid and Snap Settings.
    • В раскрывающемся меню видимости сетки () откройте дополнительное меню и выберите Edit > Grid and Snap Settings.
  2. В разделе Align Selection to Grid нажмите кнопку X, Y или Z, соответствующую ось, на которую вы хотите нажать.

    Раздел «Выровнять выделение по сетке» в окне «Сетка и привязка»

    Раздел «Выровнять выделение по сетке» в окне «Сетка и привязка»

Чтобы выровнять GameObject по всем осям одновременно:

  1. Выберите игровые объекты, которые вы хотите выровнять по сетке.

  2. Используйте сочетание клавиш Ctrl+ (Windows) или Command+ (macOS), чтобы нажать GameObject(s) на сетки по всем осям.

    Кроме того, вы можете открыть окно Grid and Snap и нажать кнопку All Axes в окне Align Selection to Grid.

Активация автоматической привязки

Чтобы включить автоматическую привязку к сетке:

  1. Активируйте инструмент Move и убедитесь, что ориентация ручки задана как глобальная ().
  2. Нажмите значок привязки к сетке () рядом с элементом Pivot/Center и Global/Local gizmos Графическое наложение, связанное с GameObject в сцене и отображаемое в представлении сцены. Встроенные инструменты сцены, такие как инструмент перемещения, представляют собой гизмо, и вы можете создавать собственные гизмо, используя текстуры или сценарии. Некоторые гизмо отрисовываются только при выборе игрового объекта, в то время как другие гизмо отрисовываются редактором независимо от того, какие игровые объекты выбраны. Подробнее
    См. Словарь
    на панели инструментов.

Когда вы включаете автоматическую привязку к сетке, инструменты Transform Move, Rotate и Scale привязывают выбранные игровые объекты к сетке. вдоль активной оси гизмо. Если вам нужно, чтобы GameObject перемещался с меньшим шагом, вы также можете преобразовать его постепенно.

Перемещение, вращение и масштабирование с шагом

Чтобы переместить, повернуть или масштабировать с помощью приращения значений привязки:

  • Удерживая нажатой клавишу Control (Windows) или Command (macOS), используйте один из инструментов преобразования .

Чтобы изменить значения привязки по умолчанию:

  1. Откройте окно Grid and Snap.

  2. Раздел Increment Snap содержит несколько свойств, позволяющих задать одинаковое значение для всех осей или разные значения:

    Увеличить раздел Snap в окне Grid and Snap

    Увеличить раздел Snap в окне Grid and Snap

    Используйте свойство Move с выбранным значком связи, чтобы ввести единое значение привязки приращения для всех осей, или отмените связь осей и установите разные значения привязки приращения в X , свойства оси Y и Z.

    Используйте свойство Rotate, чтобы ввести значение шага поворота в градусах.

    Используйте свойство Scale, чтобы ввести значение приращения масштаба в качестве коэффициента масштабирования. Например, если значение Scale равно 2, выбранный GameObject будет масштабироваться в два раза больше исходного размера.

Настройка сетки

В этом разделе содержится информация о настройке следующего:

  • Отображение и скрытие линий сетки
  • Изменение оси, на которой отображается сетка
  • Изменение размера сетки
  • Изменение цвета линий сетки по умолчанию
  • Изменение прозрачности сетки
  • Настройка местоположения сетки
  • Сброс значений и настроек по умолчанию

Отображение и скрытие линий сетки

Вы можете переключить кнопку видимости сетки () в представлении «Сцена» Панель инструментовРяд кнопок и основных элементов управления в верхней части редактора Unity, позволяющий взаимодействовать с Редактировать различными способами (например, масштабирование, перевод). Подробнее
См. в Словарь
, чтобы отобразить или скрыть сетку по любой оси (X, Y , З). Если вы находитесь в орфографическом режиме, Unity выбирает правильный вид.

Сетка появляется на определенной оси в представлении «Сцена», когда вы нажимаете кнопку видимости сетки.

Сетка появляется на определенной оси в представлении «Сцена», когда вы нажимаете кнопку видимости сетки.

Изменение оси, на которой отображается сетка

Чтобы изменить ось, на которой отображается сетка:

  1. Откройте раскрывающееся меню видимости сетки () на панели инструментов.

  2. В разделе Grid Axis выберите ось, на которой должна отображаться сетка.

    Раздел «Ось сетки» в раскрывающемся меню видимости сетки.

    Раздел «Ось сетки» в раскрывающемся меню видимости сетки.

Изменение размера сетки

Вы можете использовать окно Grid-and-Snap, чтобы задать размер линий сетки, как они отображаются в представлении «Сцена». Это влияет на внешний вид сетки и на то, как ваши игровые объекты автоматически привязываются к сетке, но не влияет на то, насколько ваши игровые объекты перемещать, вращать или масштабировать с шагом.

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

Чтобы изменить размер сетки:

  1. Откройте окно Grid and Snap.

  2. Раздел World Grid содержит несколько свойств, позволяющих задать одинаковое значение для всех осей или разные значения:

    Раздел World Grid окна Grid and Snap

    Раздел World Grid окна Grid and Snap

    Используйте свойство Size с выбранным значком связи, чтобы ввести единое значение для визуальной сетки (все линии сетки имеют одинаковую длину) или отмените связь осей и укажите неравномерное расстояние между линии сетки для X, Y и Z.

    Например, чтобы создать прямоугольную сетку по осям X и Y, отсоедините оси и установите для X и Y значение 1, а также установите Z на 2.

  3. Если вы хотите вернуться к единому значению между линиями сетки:

    • Выберите значок ссылки.
    • Свойство Size теперь отображает значение всех осей со значением, введенным в X.

Примечание. Вы также можете использовать сочетания клавиш для увеличения и уменьшения размера сетки:

  • Чтобы увеличить размер сетки, используйте Ctrl+] (Windows) or Command+] (macOS).
  • Чтобы уменьшить размер сетки, используйте Ctrl+[ (Windows) or Command+[ (macOS).

Изменение цвета линий сетки по умолчанию

Чтобы изменить цвет видимых линий сетки в представлении «Сцена»:

  1. Откройте страницу Unity Preferences (выберите Edit > Preferences в Windows или Unity > Preferences в macOS).

  2. Нажмите на категорию «Colors» в списке, чтобы открыть страницу Colors.

    Свойства настройки сетки на странице настроек

    Свойства настройки сетки на странице настроек
  3. Выберите новый цвет с помощью палитры цвета свойства Grid.

Изменение прозрачности сетки

Если линии сетки слишком светлые или слишком темные, их можно отрегулировать:

  1. Откройте раскрывающееся меню видимости сетки () на панели инструментов.< /p>

  2. В разделе Grid Settings настройте значение свойства Opacity.

    Раздел «Настройки сетки» в раскрывающемся меню видимости сетки.

    Раздел «Настройки сетки» в раскрывающемся меню видимости сетки.

Настройка положения сетки

Для перемещения сетки вперед и назад вдоль ее оси можно использовать следующие сочетания клавиш:

  • Чтобы сдвинуть сетку назад, используйте Shift+[.
  • Чтобы сдвинуть сетку вперед, используйте Shift+].

Подталкивание сетки сближает ее (например, если ваш игровой объект плохо виден на удаленной сетке) или отдаляет ее.

Используйте Set Position, чтобы переместить сетку к маркеру выбранного игрового объекта (Handle) или вернуться к положению по умолчанию (Сброс). .

Перемещение сетки к маркеру игрового объекта

  1. Откройте окно Grid and Snap.
  2. В разделе World Grid переместите сетку к маркеру выбранного игрового объекта (Handle) или верните его в положение по умолчанию (Reset)

Сброс значений и настроек по умолчанию

Чтобы восстановить значения по умолчанию для оси сетки и прозрачности:

  1. Откройте раскрывающееся меню видимости сетки () на панели инструментов.

  2. Нажмите значок дополнительного меню, а затем нажмите Сброс.

    Сетка снова появляется на оси Y, а непрозрачность равна 0,5, но видимость линий сетки остается неизменной.

Чтобы восстановить размер сетки по умолчанию:

  1. Откройте окно Grid and Snap одним из способов:

    • В главном меню Unity выберите Edit > Grid and Snap Settings.
    • В раскрывающемся меню видимости сетки () откройте дополнительное меню и выберите < b>Edit > Grid and Snap Settings.
  2. Рядом с заголовком World Grid нажмите на значок шестеренки ( ).

  3. Нажмите Reset.

    Только значения в разделе World Grid возвращаются к 1.

Чтобы сбросить значения привязки приращения к значениям по умолчанию:

  1. Откройте окно Grid and Snap одним из способов:

    • В главном меню Unity выберите Edit > Grid and Snap Settings.
    • В раскрывающемся меню видимости сетки () откройте дополнительное меню и выберите Edit > Grid and Snap Settings.
  2. Рядом с заголовком Increment Snap щелкните значок шестеренки ( ).

  3. Нажмите Reset.

    Только значения в разделе Increment Snap возвращаются к исходным значениям по умолчанию.

Ярлыки по умолчанию

Вы можете выполнять следующие действия с этими сочетаниями клавиш Unity по умолчанию:

Действие Ярлык по умолчанию
Increase Grid Size Ctrl+] (Windows) or
Command+] (macOS)
Decrease Grid Size Ctrl+[ (Windows) or
Command+[ (macOS)
Nudge Grid Backward Shift+[
Nudge Grid Forward Shift+]
Push to Grid (Align Selection to Grid) Ctrl+ (Windows) or
Command+ (macOS)
Reset Grid (no shortcut by default)

Чтобы изменить эти сочетания клавиш по умолчанию, используйте Диспетчер сочетаний клавиш.


  • Улучшения собственной сетки обновлены в 2019.3 NewIn20193

Unity provides a visual grid in the Editor’s SceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary
view
window, which can help precisely align GameObjectsThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
See in Glossary
by snapping (moving) them to the nearest grid location.

The same view displaying the grid lines along the x, y, and z axes

The same view displaying the grid lines along the x, y, and z axes

You can snap a GameObject to a grid projected along the X, Y, or Z axes in several ways:

  • Align selected GameObjects to the nearest grid point.
  • Turn on grid snapping while you move, rotate, or scale a GameObject.

You can also transform a GameObject in increments without aligning it with the gridlines. If you need to change how much you are moving, rotating, or scaling, you can change the increment snap values.

By default, the grid is hidden, but you can make it visible and switch which axis it appears along. You can customize the grid in appearance and behavior by changing the following:

  • The size of the grid (adjust the distance between the lines).
  • The color of the grid lines themselves.
  • How transparent or opaque the grid lines appear.
  • The position of the grid in the Scene viewAn interactive view into the world you are creating. You use the Scene View to select and position scenery, characters, cameras, lights, and all other types of Game Object. More info
    See in Glossary
    window (move it closer or farther).

Many of these actions support keyboard shortcuts. You can see which key combinations are assigned to these actions and use the Shortcuts Manager to customize them.

Grid and Snap toolbar Overlay

Grid and Snap toolbar Overlay

Grid and Snap toolbar Overlay
Icon Actions
Grid visibility Toggle grid on or off
Change grid axis
Change grid opacity
Move grid to gizmo handle or back to origin
Grid snapping Toggle grid snapping on or off
Change grid size
Align a GameObject to an axis
Snap increment Change the default increment snap values

Note: The settings on the Grid and Snap Overlay are global to all Scene views.

Align, snap, and incremental movements

This section provides information on how to perform these actions:

  • Aligning (pushing) to the grid
  • Activating auto-snapping
  • Moving, rotating, and scaling in increments

Align (push) to the grid

You can align a GameObject to either the closest grid point on a single axis, or on all axes at once.

To align a GameObject to the closest point on a grid for a specific axis:

  1. In the Grid and Snap Overlays toolbarA row of buttons and basic controls at the top of the Unity Editor that allows you to interact with the Editor in various ways (e.g. scaling, translation). More info
    See in Glossary
    , open the grid snapping drop-down menu ().

  2. In the Align Selected section, click the X, Y, or Z button that matches the axis you want to push to.

    Align Selection to Grid section of the Grid and Snap window

    Align Selection to Grid section of the Grid and Snap window

To align a GameObject on all axes at once:

  1. Select the GameObject(s) you want to align to the grid.

  2. Use the Ctrl+ (Windows) or Cmd+ (macOS) shortcut to push the GameObject(s) onto the grids on all axes.

    Alternatively, from the Grid and Snap Overlays toolbar, open the grid visibility drop-down menu () and in the Align Selected section, click All Axes.

Activate auto-snapping

To turn on automatic snapping to the grid:

  1. Activate the Move tool and make sure the handle orientation in the Tool Settings Overlay is set to Global ().
  2. Click the grid snapping icon () in the Grid and Snap toolbar Overlay. The icon is blue when activated.

When you enable automatic grid snapping, the Move, Rotate, and Scale transform tools snap the selected GameObject(s) to the grid along the active gizmoA graphic overlay associated with a GameObject in a Scene, and displayed in the Scene View. Built-in scene tools such as the move tool are Gizmos, and you can create custom Gizmos using textures or scripting. Some Gizmos are only drawn when the GameObject is selected, while other Gizmos are drawn by the Editor regardless of which GameObjects are selected. More info
See in Glossary
axis. If you need the GameObject to move in smaller increments, you can also transform it incrementally.

Move, rotate, and scale in increments

To move, rotate, or scale by increment snap values:

  • Hold down the Control key (Windows) or Command key (macOS) while using one of the transform gizmos.

To change the default increment snap values:

  1. From the Grid and Snap Overlays toolbar, open the snap increment drop-down menu ().

  2. The Increment Snap section contains several properties that let you set the same value for all axes or different values:

    Increment Snap section of the Grid and Snap window

    Increment Snap section of the Grid and Snap window

    Move: With the link icon selected, enter a uniform increment snap value for all axes, or unlink the axes and set different increment snap values in the X, Y, and Z axis properties.

    Rotate: Enter a rotation increment value in degrees.

    Scale: Enter a scale increment value as a scale factor. For example, if the Scale value is 2, the selected GameObject will scale at an increment of twice its original size.

Customize the grid

This section provides information on customizing the following:

  • Show and hide grid lines
  • Change the axis where the grid appears
  • Resize the grid
  • Change the default color of the grid lines
  • Change the opacity of the grid
  • Move the grid to the handle of a GameObject
  • Reset values and settings to default

Show and hide grid lines

Toggle grid visibility by clicking the grid visibility icon () on the Grid and Snap Overlay toolbar to display or hide the grid on any axis (X, Y, Z). If you are in orthographic mode (Iso), Unity chooses the view.

The grid appears in the Scene view window when you click the grid visibility button

The grid appears in the Scene view window when you click the grid visibility button

Change the axis where the grid appears

To change which axis the grid appears on:

  1. From the Grid and Snap Overlays toolbar, open the grid visibility drop-down menu ().

  2. From the Grid Plane section, select the axis you want to appear.

    The Grid Axis section under the grid visibility drop-down menu

    The Grid Axis section under the grid visibility drop-down menu

Resize the grid

You can set the size of the gridlines as they appear in the Scene view window. This affects the appearance of the grid and how your GameObjects automatically snap to the grid, but doesn’t affect how much your GameObject(s) move, rotate, or scale in increments.

If you set a size for all axes at once, a uniform (square-based) grid appears. However, you can also use different values on any of the three axes to see a non-uniform (rectangular-based) grid. By default, the grid is set to a uniform distance (1 on all axes).

To resize the grid:

  1. From the Grid and Snap Overlays toolbar, open the snap increment drop-down menu ().

  2. Use the Size property with the link icon selected to enter a uniform value for the visual grid (all grid lines the same length), or unlink the axes and specify a non-uniform distance between the grid lines for the X, Y, and Z.

    For example, to create a rectangular grid on the x and y axes, unlink the axes and set X and Y to 1, and set Z to 2.

  3. If you want to switch back to a uniform value between the grid lines:

    • Select the link icon.
    • The Size property now displays the value of all axes with the value entered in X.

Note: You can also use the keyboard shortcuts to increase and decrease the size of the grid:

  • To increase the grid size, use Ctrl+] (Windows) or Command+] (macOS).
  • To decrease the grid size, use Ctrl+[ (Windows) or Command+[ (macOS).

Change the default color of the grid lines

To change the color of the visible grid lines in the Scene view window:

  1. Open the Unity Preferences page (go to Edit > Preferences on Windows or Unity > Preferences on macOS).

  2. Click on the Colors category from the list to see the Colors page.

    The grid preference properties on the Preferences page

    The grid preference properties on the Preferences page
  3. Select a new color using the Grid property’s color picker.

Change the opacity of the grid

If the grid lines are too light or too dark, you can adjust them:

  1. From the Grid and Snap Overlays toolbar, open the grid visibility drop-down menu ().

  2. Adjust the Opacity using the slider.

    Adjust opacity in the grid visibility drop-down menu

    Adjust opacity in the grid visibility drop-down menu

Move the grid to the handle of a GameObject

From the grid visibility drop-down menu () in the Grid and Snap Overlay toolbar, use the Move To section to move the grid to the handle of the selected GameObject (Handle) or back to the default position (Origin).

Reset values and settings to default

To reset the grid axis and opacity settings to their defaults:

  1. From the Grid and Snap Overlays toolbar, open the grid visibility drop-down menu ().

  2. Click the More menu (⋮) and then click Reset.

To reset the size of the grid to the default:

  1. From the Grid and Snap Overlays toolbar, open the grid snapping drop-down menu ().

  2. Click the More menu (⋮) and then click Reset.

To reset the increment snap values to the default:

  1. From the Grid and Snap Overlays toolbar, open the snap increment drop-down menu ().

  2. Click the More menu (⋮) and then click Reset.

    Only the values under the Increment Snap section return to their original default values.

Shortcut defaults

You can perform the following actions with these default Unity shortcuts:

Action Default shortcut
Increase Grid Size Ctrl+] (Windows) or
Command+] (macOS)
Decrease Grid Size Ctrl+[ (Windows) or
Command+[ (macOS)
Push to Grid (Align Selection to Grid) Ctrl+ (Windows) or
Command+ (macOS)
Reset Grid (no shortcut by default)

To change these default keyboard shortcuts, use the Shortcuts Manager.


  • Native grid improvements updated in 2019.3 NewIn20193
  • Grid and snap moved to Overlays toolbar updated in 2021.2 NewIn20212

Как задать размеры сетке tilemap?

Создал tilemap и заметил что сами тайлы чуть больше чем сетка? Как это можно исправить?

f0kYsss
UNец
 
Сообщения: 25
Зарегистрирован: 13 янв 2019, 21:58

Re: Как задать размеры сетке tilemap?

Сообщение 1max1 28 мар 2019, 20:18

Либо сетку подгони либо тайлы))

Аватара пользователя
1max1
Адепт
 
Сообщения: 5285
Зарегистрирован: 28 июн 2017, 10:51

Re: Как задать размеры сетке tilemap?

Сообщение f0kYsss 28 мар 2019, 20:59

1max1 писал(а):Либо сетку подгони либо тайлы))

Так как сетку изменить?

f0kYsss
UNец
 
Сообщения: 25
Зарегистрирован: 13 янв 2019, 21:58

Re: Как задать размеры сетке tilemap?

Сообщение 1max1 28 мар 2019, 21:07

А как ты ее делал?

Аватара пользователя
1max1
Адепт
 
Сообщения: 5285
Зарегистрирован: 28 июн 2017, 10:51

Re: Как задать размеры сетке tilemap?

Сообщение f0kYsss 28 мар 2019, 21:17

1max1 писал(а):А как ты ее делал?

Создал tilemap

f0kYsss
UNец
 
Сообщения: 25
Зарегистрирован: 13 янв 2019, 21:58

Re: Как задать размеры сетке tilemap?

Сообщение 1max1 28 мар 2019, 22:12

У грида есть поле Cell Size

Аватара пользователя
1max1
Адепт
 
Сообщения: 5285
Зарегистрирован: 28 июн 2017, 10:51

Re: Как задать размеры сетке tilemap?

Сообщение Cr0c 31 мар 2019, 01:44

Только на забудь, что размер сетки в гриде не влияет на размер спрайтов в тайле. Они независимы. А грид универсален и можно в 3д его тоже применять (есть ассеты с тайлеными 3д объектами типа дорог).

Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 10



Unity: Изменить размер ячеек сетки

Добавить комментарий

Для обучающего проекта масштаб объекта был небольшим, в следствие чего сетка в окне Сцены была не очень заметна:

Чтобы сделать размер ячеек сетки поменьше, нужно изменить настройки:
EditGrid and Snap Settings…Grid VisualsGrid Size

  • Об авторе
  • Недавние публикации

DenTNT

DenTNT

Группа в Telegram:
@dentnt.trmw.ru
Помочь проекту: Яндекс.Деньги

DenTNT

DenTNT недавно публиковал (посмотреть все)

  • EventViewer: Ограничения XPath 1.0 — 09.02.2023
  • x64dbg: Отображать в поле комментария описание WinAPI функций — 05.02.2023
  • PowerShell: Вызвать скрипт с аргументами и пробелами в имени папки пути — 20.01.2023

Подписаться

Уведомление о

guest

0 Комментарий

Inline Feedbacks

View all comments

Знакомство с систему двухмерных тайловых карт Unity даёт отличную возможность экономии времени инди-разработчиков и игровых студий на прототипирование и создание качественных 2D-игр.

Без этой системы можно потратить дни, если не недели на написание собственной системы тайловых карт или переработку чужой. И это только программирование, а как насчёт редактора тайловых карт?

Новая система бесплатна и встроена непосредственно в редактор Unity. Она предоставляет множество возможностей, которые мы рассмотрим в этом туториале.

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

  • Как работают тайловые карты.
  • Как включать тайловые карты в Unity и настраивать сетку.
  • Как добавлять в проект спрайты, преобразовывать их в тайлы, а затем добавлять их в палитру тайлов.
  • Как использовать инструменты редактора тайлов для создания уровней.
  • Как сортировать тайлы и размещать их в разных слоях.
  • Как добавить тайлам физику Unity.
  • Как динамически окрашивать тайлы.
  • Как изменять тайлы-префабы с помощью собственного кода и логики.
  • Как добавлять в проект собственные расширения и скрипты тайловых карт.

Да уж, список оказался большим. Но не бойтесь — когда мы начнём разбираться, вы быстро поймёте, насколько просты эти инструменты.

Примечание: в этом туториале подразумевается, что вы хорошо умеете работать в редакторе Unity. Если вы считаете, что недостаточно в нём освоились, то в туториале Introduction to Unity есть всё необходимое для изучения этого туториала. Кроме того, вам необходима версия Unity 2017.3 или выше.

Что такое тайловая игра?

Тайловая 2D-игра — это любая игра, в которой уровни или игровые области состоят из множества небольших плиток (тайлов), вместе образующих сетку тайлов. Иногда различия между тайлами могут быть очевидными, а иногда они кажутся игрокам сплошными и неразличимыми.

Коллекция имеющихся в игре тайлов называется «тайлсетом», и каждый тайл обычно является спрайтом, частью листа спрайтов (spritesheet). Если вы хотите лучше разобраться с листами спрайтов, то у нас есть туториал, в котором описываются листы спрайтов Unity.

Как можно увидеть в этом туториале, обычно тайлы являются квадратами. Но они могут принимать и другую форму — прямоугольники, параллелограммы или шестигранники. В играх обычно используется вид сверху или сбоку, но иногда в тайловых играх применяется и 2.5D.

Возможно, вам уже известны две самые популярные игры, в которых используется система тайловых карт: Starbound и Terraria.

Приступаем к работе

Скачайте материалы проекта для этого туториала и распакуйте файл .zip.

Запустите редактор Unity и загрузите проект Rayzor-starter из распакованных материалов проекта.

Вот, с чем вы будете работать в этом проекте:

  • Cinemachine/Gizmos: Unity Cinemachine добавлен только для реализации простой в использовании камеры, следующей за игроком.
  • Palettes: в этой папке мы будем хранить собственные палитры тайлов.
  • Prefabs: несколько заранее созданных заготовок-префабов, которые мы позже используем в игре.
  • Scenes: здесь мы будем открывать и сохранять сцены.
  • Scripts: несколько простых скриптов для управления движением игрока, логики коллизии ловушек и победы/проигрыша в игре. Также в этой папке содержатся скрипты Unity Tilemap из Github-репозитория Unity 2D Extras, которые мы применим позже.
  • Sfx: звуки для игры.
  • Sprites: 2D-спрайты, из которых мы будем создавать палитры тайлов. Они взяты из пака пещер и подземелий для roguelike. Автор пака kenney.nl.

Создание игры

Откройте сцену Game из папки Scenes.

Нажмите на кнопку Play в редакторе, чтобы запустить игру. В окне Game перемещайте героя клавишами WASD или «стрелками».

GIF

Пока герой бродит по кажущемуся бесконечным фону камеры с цветом #00000, потерявшись в пустоте.

Чтобы исправить это, нам потребуются инструменты 2D-тайлов для построения интересных уровней и механик игры.

Знакомимся с палитрой тайлов

В редакторе нажмите Window -> Tile Palette, чтобы открыть окно 2D Tile Palette.

Это окно станет вашим лучшим другом при работе над тайловыми играми в Unity.

  1. Этот ряд значков предоставляет основные инструменты манипуляций тайлами, рисования и удаления
  2. Этот селектор позволяет создавать разные палитры, которые можно воспринимать как палитры для рисования, в которых мы располагаем «цвета», а в этом случае — тайлы.
  3. Этот селектор позволяет создавать кисти с различными поведениями. Можно добавлять собственные кисти, поведение которых отличается от кисти по умолчанию (например, рисующую тайлы-префабы с дополнительным функционалом)

Нажмите на Create New Palette и назовите палитру RoguelikeCave. Опции сетки и ячеек не изменяйте.

Нажмите на Create и выберите сохранение новой палитры в папке AssetsPalettes проекта. В ней создайте новую папку RoguelikeCave.

Теперь структура папок вашего проекта должна выглядеть так:

В окне редактора Tile palette должна быть выбрана RoguelikeCave; на этом этапе у нас всё ещё нет никаких тайлов:

Как художник может творить свои шедевры, если у него нет материалов?

Не закрывая окно Tile Palette, выберите папку проекта Sprites/roguelike-cave-pack и разверните ассет roguelikeDungeon transparent.png. Затем выделите все спрайты в этом листе спрайтов: выберите первый спрайт, зажмите shift и выберите последний спрайт.

Перетащите все выбранные спрайты в окно Tile Palette RoguelikeCave:

GIF

Перетащив спрайты в окно Tile Palette, выберите в Unity место для хранения ассетов.

Создайте в Assets/Palettes/RoguelikeCave новую папку Tiles и выберите эту папку в качестве места хранения:

Unity сгенерирует тайловый ассет для каждого спрайта, добавленного из листа спрайтов. Дождитесь завершения процесса, затем увеличьте размер окна Tile Palette и полюбуйтесь на ровные ряды красивых новых тайлов, расположившихся в палитре RoguelikeCave:

Повторите описанный выше процесс для создания палитры тайлов с помощью окна Tile Palette, но на этот раз назовите новую палитру RoguelikeCustom.

Поместите новую палитру в новую папку. Назовите папку RoguelikeCustom и переместите её в папку Assets/Palettes проекта.

На этот раз, воспользовавшись описанным выше процессом, используйте спрайты из листа Assets/Sprites/roguelike-custom/roguelike-normal-cutdown-sheet.png для заполнения тайлами новой палитры. Создайте внутри папки палитры RoguelikeCustom папку Tiles и переместите ассеты тайлов туда:

Порадуйтесь за себя, теперь вам известна магия создания тайловой палитры!

Создание сетки карты тайлов

Откройте меню GameObject в верхней части редактора Unity (или панель меню Unity, если вы работаете под MacOS), нажмите на 2D Object, а затем Tilemap, чтобы создать новую сетку Tilemap:

Вы должны увидеть, что в иерархию сцены добавился новый GameObject Grid. Разверните его и выберите встроенный GameObject Tilemap.

Воспринимайте этот объект Tilemap как слой (возможно, один из многих) вашей игры. Можно добавить новые объекты для создания дополнительных слоёв Tilemap.

В инспекторе вы увидите два компонента, которые Unity автоматически добавила к этому GameObject:

  • Компонент Tilemap используется движком Unity для хранения спрайтов в схеме, помеченной компонентом Grid — в нашем случае это GameObject Grid. При первом создании Tilemap не стоит особо беспокоиться о всех технических особенностях того, как Unity связи между всеми этими компонентами.
  • Tilemap Renderer назначает материал, который будет использоваться для рендеринга тайлов в Tilemap. Также он позволяет настроить свойства сортировки этого слоя Tilemap.

Переименуйте GameObject Tilemap в BaseLayer.

Использование различных инструментов рисования палитры тайлов

Переключитесь в редакторе на режим Scene.

Не закрывая окно Tile Palette, выберите палитру RoguelikeCave, а затем выберите инструмент brush (или нажмите B). Выберите тайл песка, как показано ниже:

В окне Scene переместите курсор на сетку рядом с игроком. Кисть с тайлом песка будет привязываться к сетке.

Зажав и удерживая левую клавишу мыши, нарисуйте вокруг игрока прямоугольную область. Она будет отрисована на слое Tilemap BaseLayer:

GIF

Рисование больших областей может оказаться монотонным занятием, поэтому существует кисть Filled Box, которую можно использовать для закрашивания крупных площадей. В окне Tile Palette нажмите на квадратный значок кисти (или нажмите U).

Вернитесь в редактор и нарисуйте вокруг игрока прямоугольник ещё большего размера, нажав и удерживая левую клавишу мыши, перетаскивая курсор из верхнего левого в нижний праый угол:

GIF

Хотя мы добавили в игру немного цвета, это песчаное подземелье выглядит уныло. Настало время добавить немного деталей!

Используйте опцию меню GameObject -> 2D Object -> Tilemap для создания нового слоя Tilemap. На этот раз это будет единственный созданный в иерархии объект, потому что у нас уже есть подходящая Grid. Переименуйте этот слой в DungeonFloorDecoration:

В окне Tile Palette переключите Active Tilemap на слой DungeonFloorDecoration:

Выберите инструмент brush (B), затем нарисуйте в окне Scene разбросанные на карте объекты:

Отключите, а затем снова включите в иерархии GameObject DungeonFloorDecoration, чтобы увидеть, как отрисовка на активном Tilemap изменяет слой DungeonFloorDecoration, а все отрисованные тайлы попадают на этот новый слой:

GIF

Создайте новый слой Tilemap, снова воспользовавшись опцией GameObject -> 2D Object -> Tilemap. Назовите его Collideable. В дальнейшем мы используем его для создания стен и границ.

Переключите Active Tilemap в окне Tile Palette на Collideable. Выберите инструмент brush (B), а затем нарисуйте следующие тайлы, чтобы построить вокруг игровой области стену. Выделенные красным зоны на изображении ниже — это новые части, которые нужно добавить:

Посмотрите на показанный ниже скриншот окна Tile Palette, чтобы разобраться, где найти тайлы, необходимые для постройки стены. Не забывайте, что можно использовать сочетания CTRL-Z или CMD-Z для отмены действия или стирать ошибки с помощью текущей кисти (удерживая Shift):

Запустите игру в редакторе и попытайтесь пройти сквозь стену:

Кто включил режим noclip?

Вы ведь не этого ожидали?

Проблема в том, что мы просто нарисовали стандартные тайлы и пока не применяли к слою Tilemap волшебную физику Unity.

Выберите GameObject Collideable и добавьте новый компонент, нажав кнопку Add Component в окне Inspector; в поле поиска введите Tilemap Collider 2D:

Этот компонент был создан специально для тайловых 2D-игр на Unity. Он просто применяет форму физического коллайдера ко всем тайлам слоя, к которому он был добавлен, не выполняя никакой другой работы.

Снова запустите игру и попробуйте пройти сквозь стену. Доступ запрещён!

GIF

Примечание: иногда при движении камеры можно заметить между некоторыми тайлами небольшие чёрные линии. Похоже, что это проблема движения камеры в проектах с системой 2D Tilemap Unity. От неё можно почти полностью избавиться, отключив Anti-Aliasing в параметрах графики. Однако даже если это сделать в проекте-заготовке, эффект всё равно слегка заметен. Решением этой проблемы может стать добавление собственного скрипта движения камеры с пиксельным смещением. Хорошее обсуждение этой проблемы можно найти здесь.

Коллизии работают хорошо, и вы можете подумать, что этого достаточно. Но пока коллайдеры не оптимизированы эффективно. В режиме Scene приблизьте часть стены и посмотрите на контуры коллайдеров:

Вокруг каждого тайла есть коллайдер. Средним секциям стен не нужны эти дополнительные коллайдеры.

Выбрав GameObject Collideable, добавьте к нему компонент Composite Collider 2D. Это также автоматически добавит RigidBody2D.

Задайте параметру BodyType RigidBody2D значение Static, а затем поставьте флажок Used by Composite в компоненте Tilemap Collider 2D:

После этого вы заметите, что эти ненужные квадратные коллайдеры посередине стен исчезнут.

Завершите создание стен, достроив их вверх и замкнув наверху, высотой примерно в 16 тайлов. Не забывайте. что в качестве Active Tilemap окна Tile Palette должен быть выбран Collideable:

Участок подземелья не будет представлять никакой сложности для нашего героя без препятствий. Теперь мы начнём работу над созданием комнаты смерти, дополненной красивыми древними мраморными коридорами. После преодоления всех этих препятствий игрока ждёт награда — гора золота.

Для отрисовки этих коридоров мы воспользуемся специальной тайловой кистью Rule Tile. Как вы видели в начале туториала, в проект уже добавлены дополнительные тайловые скрипты из Github-репозитория Unity 2D Extras. Одним из них является Rule Tile.

Rule Tile позволяет нам задавать правила о том, какие тайлы нужно отрисовывать в зависимости от соседних располагаемых нами тайлов.

Нажмите правой клавишей мыши на папке Prefabs проекта и выберите Create -> Rule Tile (этот пункт должен быть в верхней части меню). Назовите новый элемент MarbleFloorRuleTile:

Выберите этот новый MarbleFloorRuleTile и используйте инспектор, чтобы присвоить Default Sprite значение roguelikeDungeon_transparent_335. Затем добавьте новое правило Tiling Rule, нажав на значок +. Выберите для Sprite этого правила значение roguelikeDungeon_transparent_339 и нажмите на все внешние квадраты в схеме правила, чтобы на каждом была указывающая наружу зелёная стрелка:

GIF

Воспользовавшись инструментом box fill brush (B) в окне Tile Palette и выбрав слой Tilemap BaseLayer, нарисуйте прямую секцию мраморной стены. Нужно, чтобы она закрывала всё пока свободное пространство пола.

Можно заметить, что когда мы будем это делать, слой будет закрывать тайлы стен с колладерами, потому что пока не задан порядок слоёв. Это легко исправить, выбрав GameObject Collideable и изменив Order in Layer компонента Tilemap Renderer на более высокое значение (достаточно будет 5):

GIF

Вернитесь в папку Prefabs проекта, откройте окно Tile и выберите палитру RoguelikeCave, а затем перетащите MarbleFloorRuleTile в пустое место на палитре:

GIF

Воспользуйтесь box fill brush и нарисуйте в комнате несколько секций мраморного пола:

GIF

Заметьте, что настроенный тайл правил, полностью окружённый со всех углов и граней, становится украшенным тайлом (спрайтом, выбранным в редакторе Tiling Rules).

Это ловушка!

Нет, мы не будем добавлять в игру в качестве персонажа адмирала Акбара. Мы создадим тайловую кисть префаба ловушки, которой воспользуемся для отрисовки ловушек, стреляющих вращающимися лезвиями!

Создайте в иерархии новый пустой GameObject и назовите его ShootingTrap. Создайте в ShootingTrap пустой дочерний GameObject. Назовите его Sprite:

Выберите Sprite и добавьте к нему компонент Sprite Renderer. Задайте Sorting Layer значение Player, а Order in Layer значение 1, чтобы он рендерился поверх остальных слоёв. Выберите поле Sprite, а в качестве спрайта поставьте roguelikeDungeon_transparent_180.

Теперь поверните Transform объекта Sprite на -90 по оси Z:

Далее вернитесь к GameObject ShootingTrap и добавьте с помощью инспектора новый компонент. В поле поиска найдите Shooting Trap и прикрепите этот скрипт.

Этот скрипт добавлен в скачанные вами файлы проекта; по сути, он каждые две секунды запускает корутину, создающую экземпляр префаба вращающегося лезвия пилы (или любого другого префаба) в текущей позиции ловушки.

Задайте параметру Item to Shoot Prefab компонента Shooting Trap значение Projectile (префаб находится в /Assets/Prefabs):

Снова запустите игру в редакторе и воспользуйтесь режимом Scene, чтобы найти ловушку. Она работает!

GIF

Перетащите копию ShootingTrap из иерархии в папку /Assets/Prefabs проекта, чтобы создать префаб. Удалите ShootingTrap из иерархии.

Мы используем ещё один скрипт тайловой кисти под названием PrefabBrush для создания кисти, способной рисовать префабы на слоях Tilemap.

Нажмите правой кнопкой на папке /Assets/Prefabs проекта и выберите Create -> Prefab Brush. Назовите объект PrefabBrush.

Воспользуйтесь инспектором, чтобы задать параметру Prefabs Size PrefabBrush значение 1, а параметру Element 0 — значение ShootingTrap.

Создайте в Grid новый слой Tilemap под названием Traps и откройте окно Tile Palette.

Выберите обычную тайловую кисть (B) и воспользуйтесь раскрывающимся меню в нижней части окна Tile Palette для выбора PrefabBrush. Выберите в качестве слоя Active Tilemap Traps и используйте окно Scene для отрисовки нескольких префабов ловушек вдоль левой границы комнаты.

GIF

Разверните в иерархии GameObject Traps и поэкспериментируйте со значением Shoot Start Delay для каждого value on each Gameobject ShootingTrap с помощью скрипта Shooting Trap в инспекторе. Добавляйте к значению каждой ловушки по 0.25, т.е.:

  • Первая ShootingTrap -> Shoot Start Delay = 0.1
  • Вторая ShootingTrap -> Shoot Start Delay = 0.35
  • Третья ShootingTrap -> Shoot Start Delay = 0.6
  • И так далее…

Запустите игру и пройдите испытание, если осмелитесь.

GIF

Конечная цель

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

Создайте в GameObject Grid новый слой Tilemap под названием Goal. Выберите Goal и измените значение Tilemap Renderer Order in Layer на 2:

Не закрывая окно Tile Palette, убедитесь, что всё ещё выбрана PrefabBrush. Сделайте так, чтобы Element 0 ссылался на заготовку Goal из папки /Assets/Prefabs проекта.

Это префаб со спрайтом горы золота, с Box Collider 2D со включенным режимом Is Trigger, добавленным источником звука, и с простым скриптом Goal.cs, воспроизводящим звук достижения цели и перезапускающим уровень, когда игрок попадает в область триггера.

Воспользуйтесь стандартной тайловой кистью для отрисовки одного тайла-префаба цели в верхней части комнаты за ловушками:

Снова запустите игру и попробуйте достичь цели. Когда вы доберётесь до этого тайла, запустится логика OnTriggerEnter2D() из Goal.cs, воспроизведя звуковой эффект и перезапустив уровень.

Последние штрихи

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

Выберите Sprite объектов Player, Goal и ShootingTrap, и сделайте так, чтобы Material компонента Sprite Renderer использовал SpriteLightingMaterial:

Это материал с прикреплённым к нему шейдером Sprite/Diffuse. Он позволяет освещению сцены воздействовать на спрайты.

В GameObject Grid выберите объекты BaseLayer, DungeonFloorDecoration, Collideable и Goal, а потом воспользуйтесь инспектором, чтобы тоже использовать в материале Tilemap Renderer Material SpriteLightingMaterial.

Затем выберите в GameObject Lights Directional light и снизьте значение Intensity Light до 0.3.

Так гораздо лучше!

Также вы сейчас заметите, что Player носит с собой Point light, то есть светящий вокруг него Lantern.

Теперь, когда спрайты в сцене используют подходящий материал, освещение Unity влияет на все окружающие его спрайты.

Перетащите две копии префаба FlickerLight из папки /Assets/Prefabs проекта в Scene и разместите их в GameObject Lights.

Задайте первому префабу позицию (X:-11.25, Y:4, Z:-1.35), а второму — (X:2.75, Y:4, Z:-1.35).

Создайте новый слой Tilemap под названием WallsAndObjects и задайте в инспекторе Tilemap Renderer Order in Layer значение 15. Не забудьте, чтобы Material тоже использовал материал SpriteLightingMaterial.

Переключите кисть палитры тайлов обратно на Default Brush, а Active Tilemap на WallsAndObjects.

Воспользуйтесь инструментом brush (B) для отрисовки двух тайлов «света фонарей» под каждым из новых FlickerLight, которые мы разместили по углам начальной области:

Время трудностей

Посмотрим, сможем ли мы ещё больше улучшить подземелье. Используйте слой Tilemap WallsAndObjects для создания книжных шкафов в верхней части комнаты подземелья с помощью другой палитры тайлов под названием RoguelikeCustom. Также нарисуйте одну-две части стены с трещинами.

Вернитесь обратно в слой Tilemap DungeonFloorDecoration и добавьте ещё немного деталей на мраморный пол, например, трещины на нескольких тайлах:

GIF

Поздравляю, вы завершили свой первый мини-уровень подземелья! В результате у вас должно получиться нечто подобное:

Куда двигаться дальше?

Если вы пропустили какой-то шаг, то можете посмотреть на готовый результат этого туториала, открыв проект Unity Rayzor-final из скачиваемых материалов.

В этом туториале мы научились многому, но как и в любом другом деле, всегда есть что-то ещё!

Существуют интересные скрипты тайловых кистей, не рассмотренные в этом туториале. Прочитайте о них здесь и подумайте, сможете ли вы воспользоваться ими.

Также можете изучить создание анимированных тайлов здесь.

  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /

avatar image


2

How do I change the size of a tilemap? I’m probably missing somet$$anonymous$$ng really obvious here, but I can’t seem to change the size of my tilemap. Currently, it’s stuck 5×6 but I want to be 20×20. Is there any way to change t$$anonymous$$s?

2 Replies

·
Add your reply

  • Sort: 

avatar image


4

Answer by Atimlotus · Nov 24, 2019 at 05:58 PM

Hello @IamDumb,

I was trying to manually set the size of a tilemap today and the values I was getting from the script API just weren’t making sense to me.

tilemap.cellBounds, tilemap.size, tilemap.localBounds were all showing me dimensions that didn’t match what I was seeing in my scene.

What I found was that enabling «Debug Mode» allowed me to view and change the size of the tilemap in the inspector. Debug mode can be enabled by clicking the dropdown button next to the lock icon at the top right of the inspector window.

One t$$anonymous$$ng I noticed after doing t$$anonymous$$s was that painting tiles in the scene will automatically change the size of the tilemap if you go outside of the defined bounds of the tilemap. So if you have your 20×20 size tilemap and you paint in a tile one space to the right of the right bounds the tilemap will resize to 21×20.

So how did you fix this? How does one make the tilemap smaller back again?

Thanks

@Gothbag From what I can see in testing Tilemap.size does not automatically resize itself when you erase tiles in the scene view.

There does appear to be a function that will automatically resize the bounds of the tilemap based on it’s current contents. In script you’d call Tilemap.CompressBounds(). To use the same function in the inspector/editor the inspector needs to be in debug mode. In the scene hierarchy select the game object that has the tilemap component you’re trying to resize. In the inspector go to the Tilemap component and open the component settings by clicking on the 3 stacked dots on the far right side of the component’s titlebar. At the bottom of the menu that opens you should see «Compress Tilemap Bounds».

avatar image


3

Answer by TheKnightsofUnity · Apr 19, 2019 at 03:44 PM

Hello @IamDumb !
There are a few different ways of resizing the tilemap, each comes with a different result:

1. Change the Scale or Cell Size of Grid – when you create a new Tilemap, Unity will automatically generate two game objects: a Grid with a Tilemap c$$anonymous$$ld. You can change the Scale field of the Grid’s transform or Cell Size in the Grid component. Changing the scale will stretch all tiles in the tilemap, whereas changing the Cell Size will leave the tiles unchanged – only the actual size of a cell will be changed.

2. Scale the game object with Tilemap component attached – t$$anonymous$$s will stretch all tiles in all scaled directions,

3. Change orientation to Custom – by changing the Orientation field of Tilemap component, the Scale fields are now editable. Changing t$$anonymous$$s field will resize the sprite of each tile, leaving the actual cell size untouched (t$$anonymous$$s might cause tiles to overlap),

4. Change the size of the particular tiles – by clicking on a tile in a Tile Palette window will show Grid Selection in the Inspector. You can change the Scale field of a tile, w$$anonymous$$ch have a similar effect as step 3, but will affect only a particular tile.

We hope one of the solutions we suggested will solve your problem!


All the best,
The Knights of Unity

Your answer

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Related Questions

В Unity 2017.2 к возможностям работы с 2D добавили Тайлмапы (Tilemap). Используя карты тайлов, ты можешь быстро компоновать и создавать 2D-уровни с помощью комбинации спрайтов и контролировать такие свойства, как порядок слоёв, тайлмапные коллайдеры, анимированные тайлы и многое другое! В этой записи я постараюсь рассказать о всём рабочем процессе, начиная с импорта файлов изображений в Unity и до создания уровня для 2D-платформера!

Договоримся о понятиях. Реальность такова, что мы, работая с Unity, часто в речи не переводим названия понятий, функций, фич и т. д., а скорее транскрибируем. Например, редко можно услышать как Tilemap называют «Карта плиток», зато чаще «Тайлмап» или «Карта тайлов». При первом упоминании, я буду стараться приводить оба варианта, а дальше то, которое употребляется чаще.

Коротко процесс работы можно описать так:

Sprite -> Tile -> Palette -> Brush -> Tilemap

Для новичка эти термины Unity могут показаться немного запутанными. Но мы представим это как рисование на настоящем холсте:

Тюбик с краской -> Краска -> Палитра-> Кисть -> Холст

Для этого поста, я буду использовать «GrassPlatform_TileSet», позаимствованный из официальной инструкции

К концу мы соберём уровень из этих кусочков так, что 2D-персонаж сможет бегать по уровню.

1) Спрайты (Sprites)

Импортировать изображения в Unity можно разными способами:

  • Сохранить нужный файл изображения в папке контента проекта «Assets»
  • Из верхнего меню, выбрав проекта «Assets -> Import New Asset» и выбрав нужный файл
  • Перетащив файл изображения из проводника в окно проекта (Project Window) в редакторе Unity (это, пожалуй, самый простой способ)

После того как мы импортировали изображение в проект, его тип текстуры (Texture Type) определяется в зависимости от режима твоего проекта 2D или 3D.

Т. к. мой проект уже настроен для 2D режима, «GrassPlatform_TileSet» будет автоматически присвоен тип текстуры «Sprite (2D and UI)», это позволит, тайлу (tile) ссылаться на этот спрайт.

Тип текстур в Unity

«GrassPlatform_TileSet» — это серия спрайтов в одной картинке, нам нужно будет нарезать его на отдельные спрайты; это может быть сделано путем настройки режима спрайта из «единичный» (Single) в «множественный» (Multiple) и открытием редактора спрайтов (Sprite Editor):

Режим спрайта Single или Multiplee

Окно редактора спрайтов позволяет нарезать изображение на несколько спрайтов; так что ты сможешь сделать одно изображение со множеством рисунков (spritesheet) в любом программном обеспечении для редактирования изображений и определить, какие области изображения рассматриваются как отдельные спрайты прямо в Unity. Не надо плодить и управляться с сотнями отдельных файлов изображения!

«GrassPlatform_TileSet» изображение составляется из ряда плиток или тайлов (tile), мы можем использовать настройку нарезки по сетке в редакторе спрайтов (Sprite Editor’s Grid Slicing) для автоматического разбиения изображения на несколько спрайтов. Размеры каждой ячейки в этом наборе тайлов (tileset) 64 на 64 пикселя, так что мы можем ввести эти настройки и позволить редактору спрайтов автоматически создать необходимые нарезки спрайта:

Редактор спрайтов Unity
И после нажатия кнопки нарезать «Slice», мы получим нарезанный набор спрайтов!

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

После надо «Применить» изменения спрайте (нажав кнопку «Применить» в верхнем правом углу редактора спрайта), которая затем позволит нам ссылаться на каждый отрезанный спрайт по отдельности в окне проекта.

После того, как мы нарезали наш лист спрайтов на отдельные спрайты, нам следом нужно «конвертировать» их в тайлы-плитки (tiles).

2) Контент «Плитка»

По умолчанию базовая плитка (Tile) (создаётся из «Create -> Tile» в окне проекта) позволяет спрайту, быть назначенным плиткой, а также иметь настройки такие как оттенок спрайта и тип коллайдера, который будет использован у карты тайлов (Tilemap) (что будет объяснено позже).

Тайлы (плитки) в Unity

3) Окно «Палитра Плитки» (Tile Palette)

В Unity 2017.2 появилось новое окно: палитра плиток (Tile Palette). Это окно является неотъемлемой частью использования тайлмап-системы, организуя интерфейс для выбора плиток (Tiles).

Палитра плиток (тайлов)

Прежде чем мы сможем добавить «TopGrassTile» плитку в окно палитры плиток (Tile Palette), мы сначала создадим новую палитру (Palette). Палитры (Palettes) могут быть использованы для организации наборов плиток (Tiles) для хранения их всех (сотни или больше!) в одном месте.

В выпадающем окне меню палитры (Palette) есть опция, чтобы создать совершенно новую палитру. И просто можно из папки контента «перетащить и бросить», чтоб добавить «TopGrassTile» в эту новую палитру!

Палитра тайлов

Чтобы не таскать по одному изображению, есть вариант перетащить лист спрайтов (Spritesheet), который содержит нарезанные спрайты, чтобы автоматически создать набор плиток (Tiles) на палитре.

4) Grid & Tilemap

Теперь, когда наш «GrassPlatform_TileSet» спрайтшит (Spritesheet) успешно настроен в окне палитры плиток (Tile Palette), самое время начать строительство 2D уровня!

Для начала нам нужно создать новый тайлмап на нашей текущей сцене; это можно сделать в выпадающем меню: GameObject -> 2D Objects -> Tilemap. Это не только создаст тайлмап, также создаётся игровой объект сетка (Grid), для которой новый тайлмап автоматически станет дочерним.

Наиболее похожие игровые объекты по структуре на «Сетка <-> Тайлмап», это настройка интерфейса пользователя в Unity; где холст (Canavas) родитель игрового объекта выступает в качестве контейнера дочернего UI объекта (такого как текст и изображение). В игровом объекте «Сетка» используется компонент с таким же именем «Сетка» (Grid). Он определяет размеры всего дочернего тайлмапа у игрового объекта.

Сетка для тайлов в Unity

Тайлмап-система была разработана так, что несколько тайлмапов игровых объектов могут быть дочерними к одной сетке. Это позволит собрать твой уровень из нескольких слоев и из разных плиток.

5) Рисование на тайлмапе!

Чтобы рисовать на тайлмапе, надо выбрать: активный тайлмап, и какая «кисть» используются в настоящее время. Первое можно выбрать из «Active Tilemap» в выпадающем окне палитры плиток (Tile Palette).

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

Выбор карт тайлов
На скриншоте сложная сцена со множеством тайлмапов

Второе, что нужно выбрать — текущую кисть. Она определяет, как плитка (или плитки) будут размещены на тайлмапе.

Когда плитки уже нарисованы на карте, может оказаться, что плитка меньше, чем размер ячеек сетки. Это не ошибка, объясню, почему и как изменить это.

Компонент сетка использует единицы мирового пространства Unity для измерения расстояния. Например, куб с масштабированием по умолчанию 1 для каждой оси будет иметь такой же размер. А, именно: одна ячейка на сетке по умолчанию. Каждый спрайт имеет значение «Пикселей на юнит» в параметрах импорта, по умолчанию используется значение 100.

Настройка пикселей на юнит в Unity

Наши спрайты имеют размер 64 на 64 пикселя, установка соответствующего значения «Пикселей на юнит» позволит автоматически регулировать масштаб на все нарезанные спрайты; таким образом, сторона соответствующие плитки будет соответствовать клеткам решётки!

6) Тайлмап коллайдер (Tilemap Collider) и составной коллайдер (Composite Collider)

Сейчас у тебя есть все знания, чтобы нарисовать готовый уровень.

Тайлмап коллайдер в Unity

Когда ты добавишь персонажа с физикой и войдёшь в режим игры, он провалится сквозь землю. Вместе с тайлмап-системой появился очень полезный 2D-компонент тайлмап коллайдер (Tilemap Collider). При применении к тайлмапу, он будет автоматически создавать коллайдер вокруг плиток. Тогда в режиме игры, наш персонаж сможет бегать и прыгать на тайлмапе!

Если ты решишь изменить планировку уровня (например, добавить больше плиток или удалить некоторые), то тайлмап коллайдер автоматически обновится!

Создание игр основывающихся на тайлах — хорошая практика, но надо помнить, что это не единственный вариант. Иногда, лучше нарисовать всё целиком, в этом поможет статья как выбрать разрешения для 2D-контента.

Еще один полезный компонент, который добавили в 2D набор физики — составной коллайдер (Composite Collider). Добавление его к тайлмап коллайдеру объединит все коллайдеры плитки в более оптимальную геометрию сетки коллайдера.

Если после этой подробной статьи у тебя остались вопросы, оставляй комментарий ниже, обсудим!

Введение в новую систему тайловых карт Unity +21

Разработка игр, Unity3D


Рекомендация: подборка платных и бесплатных курсов создания сайтов — https://katalog-kursov.ru/

Знакомство с систему двухмерных тайловых карт Unity даёт отличную возможность экономии времени инди-разработчиков и игровых студий на прототипирование и создание качественных 2D-игр.

Без этой системы можно потратить дни, если не недели на написание собственной системы тайловых карт или переработку чужой. И это только программирование, а как насчёт редактора тайловых карт?

Новая система бесплатна и встроена непосредственно в редактор Unity. Она предоставляет множество возможностей, которые мы рассмотрим в этом туториале.

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

  • Как работают тайловые карты.
  • Как включать тайловые карты в Unity и настраивать сетку.
  • Как добавлять в проект спрайты, преобразовывать их в тайлы, а затем добавлять их в палитру тайлов.
  • Как использовать инструменты редактора тайлов для создания уровней.
  • Как сортировать тайлы и размещать их в разных слоях.
  • Как добавить тайлам физику Unity.
  • Как динамически окрашивать тайлы.
  • Как изменять тайлы-префабы с помощью собственного кода и логики.
  • Как добавлять в проект собственные расширения и скрипты тайловых карт.

Да уж, список оказался большим. Но не бойтесь — когда мы начнём разбираться, вы быстро поймёте, насколько просты эти инструменты.

Примечание: в этом туториале подразумевается, что вы хорошо умеете работать в редакторе Unity. Если вы считаете, что недостаточно в нём освоились, то в туториале Introduction to Unity есть всё необходимое для изучения этого туториала. Кроме того, вам необходима версия Unity 2017.3 или выше.

Что такое тайловая игра?

Тайловая 2D-игра — это любая игра, в которой уровни или игровые области состоят из множества небольших плиток (тайлов), вместе образующих сетку тайлов. Иногда различия между тайлами могут быть очевидными, а иногда они кажутся игрокам сплошными и неразличимыми.

Коллекция имеющихся в игре тайлов называется «тайлсетом», и каждый тайл обычно является спрайтом, частью листа спрайтов (spritesheet). Если вы хотите лучше разобраться с листами спрайтов, то у нас есть туториал, в котором описываются листы спрайтов Unity.

Как можно увидеть в этом туториале, обычно тайлы являются квадратами. Но они могут принимать и другую форму — прямоугольники, параллелограммы или шестигранники. В играх обычно используется вид сверху или сбоку, но иногда в тайловых играх применяется и 2.5D.

Возможно, вам уже известны две самые популярные игры, в которых используется система тайловых карт: Starbound и Terraria.

Приступаем к работе

Скачайте материалы проекта для этого туториала и распакуйте файл .zip.

Запустите редактор Unity и загрузите проект Rayzor-starter из распакованных материалов проекта.

Вот, с чем вы будете работать в этом проекте:

  • Cinemachine/Gizmos: Unity Cinemachine добавлен только для реализации простой в использовании камеры, следующей за игроком.
  • Palettes: в этой папке мы будем хранить собственные палитры тайлов.
  • Prefabs: несколько заранее созданных заготовок-префабов, которые мы позже используем в игре.
  • Scenes: здесь мы будем открывать и сохранять сцены.
  • Scripts: несколько простых скриптов для управления движением игрока, логики коллизии ловушек и победы/проигрыша в игре. Также в этой папке содержатся скрипты Unity Tilemap из Github-репозитория Unity 2D Extras, которые мы применим позже.
  • Sfx: звуки для игры.
  • Sprites: 2D-спрайты, из которых мы будем создавать палитры тайлов. Они взяты из пака пещер и подземелий для roguelike. Автор пака kenney.nl.

Создание игры

Откройте сцену Game из папки Scenes.

Нажмите на кнопку Play в редакторе, чтобы запустить игру. В окне Game перемещайте героя клавишами WASD или «стрелками».

GIF

Пока герой бродит по кажущемуся бесконечным фону камеры с цветом #00000, потерявшись в пустоте.

Чтобы исправить это, нам потребуются инструменты 2D-тайлов для построения интересных уровней и механик игры.

Знакомимся с палитрой тайлов

В редакторе нажмите Window -> Tile Palette, чтобы открыть окно 2D Tile Palette.

Это окно станет вашим лучшим другом при работе над тайловыми играми в Unity.

  1. Этот ряд значков предоставляет основные инструменты манипуляций тайлами, рисования и удаления
  2. Этот селектор позволяет создавать разные палитры, которые можно воспринимать как палитры для рисования, в которых мы располагаем «цвета», а в этом случае — тайлы.
  3. Этот селектор позволяет создавать кисти с различными поведениями. Можно добавлять собственные кисти, поведение которых отличается от кисти по умолчанию (например, рисующую тайлы-префабы с дополнительным функционалом)

Нажмите на Create New Palette и назовите палитру RoguelikeCave. Опции сетки и ячеек не изменяйте.

Нажмите на Create и выберите сохранение новой палитры в папке AssetsPalettes проекта. В ней создайте новую папку RoguelikeCave.

Теперь структура папок вашего проекта должна выглядеть так:

В окне редактора Tile palette должна быть выбрана RoguelikeCave; на этом этапе у нас всё ещё нет никаких тайлов:

Как художник может творить свои шедевры, если у него нет материалов?

Не закрывая окно Tile Palette, выберите папку проекта Sprites/roguelike-cave-pack и разверните ассет roguelikeDungeon transparent.png. Затем выделите все спрайты в этом листе спрайтов: выберите первый спрайт, зажмите shift и выберите последний спрайт.

Перетащите все выбранные спрайты в окно Tile Palette RoguelikeCave:

GIF

Перетащив спрайты в окно Tile Palette, выберите в Unity место для хранения ассетов.

Создайте в Assets/Palettes/RoguelikeCave новую папку Tiles и выберите эту папку в качестве места хранения:

Unity сгенерирует тайловый ассет для каждого спрайта, добавленного из листа спрайтов. Дождитесь завершения процесса, затем увеличьте размер окна Tile Palette и полюбуйтесь на ровные ряды красивых новых тайлов, расположившихся в палитре RoguelikeCave:

Повторите описанный выше процесс для создания палитры тайлов с помощью окна Tile Palette, но на этот раз назовите новую палитру RoguelikeCustom.

Поместите новую палитру в новую папку. Назовите папку RoguelikeCustom и переместите её в папку Assets/Palettes проекта.

На этот раз, воспользовавшись описанным выше процессом, используйте спрайты из листа Assets/Sprites/roguelike-custom/roguelike-normal-cutdown-sheet.png для заполнения тайлами новой палитры. Создайте внутри папки палитры RoguelikeCustom папку Tiles и переместите ассеты тайлов туда:

Порадуйтесь за себя, теперь вам известна магия создания тайловой палитры!

Создание сетки карты тайлов

Откройте меню GameObject в верхней части редактора Unity (или панель меню Unity, если вы работаете под MacOS), нажмите на 2D Object, а затем Tilemap, чтобы создать новую сетку Tilemap:

Вы должны увидеть, что в иерархию сцены добавился новый GameObject Grid. Разверните его и выберите встроенный GameObject Tilemap.

Воспринимайте этот объект Tilemap как слой (возможно, один из многих) вашей игры. Можно добавить новые объекты для создания дополнительных слоёв Tilemap.

В инспекторе вы увидите два компонента, которые Unity автоматически добавила к этому GameObject:

  • Компонент Tilemap используется движком Unity для хранения спрайтов в схеме, помеченной компонентом Grid — в нашем случае это GameObject Grid. При первом создании Tilemap не стоит особо беспокоиться о всех технических особенностях того, как Unity связи между всеми этими компонентами.
  • Tilemap Renderer назначает материал, который будет использоваться для рендеринга тайлов в Tilemap. Также он позволяет настроить свойства сортировки этого слоя Tilemap.

Переименуйте GameObject Tilemap в BaseLayer.

Использование различных инструментов рисования палитры тайлов

Переключитесь в редакторе на режим Scene.

Не закрывая окно Tile Palette, выберите палитру RoguelikeCave, а затем выберите инструмент brush (или нажмите B). Выберите тайл песка, как показано ниже:

В окне Scene переместите курсор на сетку рядом с игроком. Кисть с тайлом песка будет привязываться к сетке.

Зажав и удерживая левую клавишу мыши, нарисуйте вокруг игрока прямоугольную область. Она будет отрисована на слое Tilemap BaseLayer:

GIF

Рисование больших областей может оказаться монотонным занятием, поэтому существует кисть Filled Box, которую можно использовать для закрашивания крупных площадей. В окне Tile Palette нажмите на квадратный значок кисти (или нажмите U).

Вернитесь в редактор и нарисуйте вокруг игрока прямоугольник ещё большего размера, нажав и удерживая левую клавишу мыши, перетаскивая курсор из верхнего левого в нижний праый угол:

GIF

Хотя мы добавили в игру немного цвета, это песчаное подземелье выглядит уныло. Настало время добавить немного деталей!

Используйте опцию меню GameObject -> 2D Object -> Tilemap для создания нового слоя Tilemap. На этот раз это будет единственный созданный в иерархии объект, потому что у нас уже есть подходящая Grid. Переименуйте этот слой в DungeonFloorDecoration:

В окне Tile Palette переключите Active Tilemap на слой DungeonFloorDecoration:

Выберите инструмент brush (B), затем нарисуйте в окне Scene разбросанные на карте объекты:

Отключите, а затем снова включите в иерархии GameObject DungeonFloorDecoration, чтобы увидеть, как отрисовка на активном Tilemap изменяет слой DungeonFloorDecoration, а все отрисованные тайлы попадают на этот новый слой:

GIF

Создайте новый слой Tilemap, снова воспользовавшись опцией GameObject -> 2D Object -> Tilemap. Назовите его Collideable. В дальнейшем мы используем его для создания стен и границ.

Переключите Active Tilemap в окне Tile Palette на Collideable. Выберите инструмент brush (B), а затем нарисуйте следующие тайлы, чтобы построить вокруг игровой области стену. Выделенные красным зоны на изображении ниже — это новые части, которые нужно добавить:

Посмотрите на показанный ниже скриншот окна Tile Palette, чтобы разобраться, где найти тайлы, необходимые для постройки стены. Не забывайте, что можно использовать сочетания CTRL-Z или CMD-Z для отмены действия или стирать ошибки с помощью текущей кисти (удерживая Shift):

Запустите игру в редакторе и попытайтесь пройти сквозь стену:

Кто включил режим noclip?

Вы ведь не этого ожидали?

Проблема в том, что мы просто нарисовали стандартные тайлы и пока не применяли к слою Tilemap волшебную физику Unity.

Выберите GameObject Collideable и добавьте новый компонент, нажав кнопку Add Component в окне Inspector; в поле поиска введите Tilemap Collider 2D:

Этот компонент был создан специально для тайловых 2D-игр на Unity. Он просто применяет форму физического коллайдера ко всем тайлам слоя, к которому он был добавлен, не выполняя никакой другой работы.

Снова запустите игру и попробуйте пройти сквозь стену. Доступ запрещён!

GIF

Примечание: иногда при движении камеры можно заметить между некоторыми тайлами небольшие чёрные линии. Похоже, что это проблема движения камеры в проектах с системой 2D Tilemap Unity. От неё можно почти полностью избавиться, отключив Anti-Aliasing в параметрах графики. Однако даже если это сделать в проекте-заготовке, эффект всё равно слегка заметен. Решением этой проблемы может стать добавление собственного скрипта движения камеры с пиксельным смещением. Хорошее обсуждение этой проблемы можно найти здесь.

Коллизии работают хорошо, и вы можете подумать, что этого достаточно. Но пока коллайдеры не оптимизированы эффективно. В режиме Scene приблизьте часть стены и посмотрите на контуры коллайдеров:

Вокруг каждого тайла есть коллайдер. Средним секциям стен не нужны эти дополнительные коллайдеры.

Выбрав GameObject Collideable, добавьте к нему компонент Composite Collider 2D. Это также автоматически добавит RigidBody2D.

Задайте параметру BodyType RigidBody2D значение Static, а затем поставьте флажок Used by Composite в компоненте Tilemap Collider 2D:

После этого вы заметите, что эти ненужные квадратные коллайдеры посередине стен исчезнут.

Завершите создание стен, достроив их вверх и замкнув наверху, высотой примерно в 16 тайлов. Не забывайте. что в качестве Active Tilemap окна Tile Palette должен быть выбран Collideable:

Участок подземелья не будет представлять никакой сложности для нашего героя без препятствий. Теперь мы начнём работу над созданием комнаты смерти, дополненной красивыми древними мраморными коридорами. После преодоления всех этих препятствий игрока ждёт награда — гора золота.

Для отрисовки этих коридоров мы воспользуемся специальной тайловой кистью Rule Tile. Как вы видели в начале туториала, в проект уже добавлены дополнительные тайловые скрипты из Github-репозитория Unity 2D Extras. Одним из них является Rule Tile.

Rule Tile позволяет нам задавать правила о том, какие тайлы нужно отрисовывать в зависимости от соседних располагаемых нами тайлов.

Нажмите правой клавишей мыши на папке Prefabs проекта и выберите Create -> Rule Tile (этот пункт должен быть в верхней части меню). Назовите новый элемент MarbleFloorRuleTile:

Выберите этот новый MarbleFloorRuleTile и используйте инспектор, чтобы присвоить Default Sprite значение roguelikeDungeon_transparent_335. Затем добавьте новое правило Tiling Rule, нажав на значок +. Выберите для Sprite этого правила значение roguelikeDungeon_transparent_339 и нажмите на все внешние квадраты в схеме правила, чтобы на каждом была указывающая наружу зелёная стрелка:

GIF

Воспользовавшись инструментом box fill brush (B) в окне Tile Palette и выбрав слой Tilemap BaseLayer, нарисуйте прямую секцию мраморной стены. Нужно, чтобы она закрывала всё пока свободное пространство пола.

Можно заметить, что когда мы будем это делать, слой будет закрывать тайлы стен с колладерами, потому что пока не задан порядок слоёв. Это легко исправить, выбрав GameObject Collideable и изменив Order in Layer компонента Tilemap Renderer на более высокое значение (достаточно будет 5):

GIF

Вернитесь в папку Prefabs проекта, откройте окно Tile и выберите палитру RoguelikeCave, а затем перетащите MarbleFloorRuleTile в пустое место на палитре:

GIF

Воспользуйтесь box fill brush и нарисуйте в комнате несколько секций мраморного пола:

GIF

Заметьте, что настроенный тайл правил, полностью окружённый со всех углов и граней, становится украшенным тайлом (спрайтом, выбранным в редакторе Tiling Rules).

Это ловушка!

Нет, мы не будем добавлять в игру в качестве персонажа адмирала Акбара. Мы создадим тайловую кисть префаба ловушки, которой воспользуемся для отрисовки ловушек, стреляющих вращающимися лезвиями!

Создайте в иерархии новый пустой GameObject и назовите его ShootingTrap. Создайте в ShootingTrap пустой дочерний GameObject. Назовите его Sprite:

Выберите Sprite и добавьте к нему компонент Sprite Renderer. Задайте Sorting Layer значение Player, а Order in Layer значение 1, чтобы он рендерился поверх остальных слоёв. Выберите поле Sprite, а в качестве спрайта поставьте roguelikeDungeon_transparent_180.

Теперь поверните Transform объекта Sprite на -90 по оси Z:

Далее вернитесь к GameObject ShootingTrap и добавьте с помощью инспектора новый компонент. В поле поиска найдите Shooting Trap и прикрепите этот скрипт.

Этот скрипт добавлен в скачанные вами файлы проекта; по сути, он каждые две секунды запускает корутину, создающую экземпляр префаба вращающегося лезвия пилы (или любого другого префаба) в текущей позиции ловушки.

Задайте параметру Item to Shoot Prefab компонента Shooting Trap значение Projectile (префаб находится в /Assets/Prefabs):

Снова запустите игру в редакторе и воспользуйтесь режимом Scene, чтобы найти ловушку. Она работает!

GIF

Перетащите копию ShootingTrap из иерархии в папку /Assets/Prefabs проекта, чтобы создать префаб. Удалите ShootingTrap из иерархии.

Мы используем ещё один скрипт тайловой кисти под названием PrefabBrush для создания кисти, способной рисовать префабы на слоях Tilemap.

Нажмите правой кнопкой на папке /Assets/Prefabs проекта и выберите Create -> Prefab Brush. Назовите объект PrefabBrush.

Воспользуйтесь инспектором, чтобы задать параметру Prefabs Size PrefabBrush значение 1, а параметру Element 0 — значение ShootingTrap.

Создайте в Grid новый слой Tilemap под названием Traps и откройте окно Tile Palette.

Выберите обычную тайловую кисть (B) и воспользуйтесь раскрывающимся меню в нижней части окна Tile Palette для выбора PrefabBrush. Выберите в качестве слоя Active Tilemap Traps и используйте окно Scene для отрисовки нескольких префабов ловушек вдоль левой границы комнаты.

GIF

Разверните в иерархии GameObject Traps и поэкспериментируйте со значением Shoot Start Delay для каждого value on each Gameobject ShootingTrap с помощью скрипта Shooting Trap в инспекторе. Добавляйте к значению каждой ловушки по 0.25, т.е.:

  • Первая ShootingTrap -> Shoot Start Delay = 0.1
  • Вторая ShootingTrap -> Shoot Start Delay = 0.35
  • Третья ShootingTrap -> Shoot Start Delay = 0.6
  • И так далее…

Запустите игру и пройдите испытание, если осмелитесь.

GIF

Конечная цель

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

Создайте в GameObject Grid новый слой Tilemap под названием Goal. Выберите Goal и измените значение Tilemap Renderer Order in Layer на 2:

Не закрывая окно Tile Palette, убедитесь, что всё ещё выбрана PrefabBrush. Сделайте так, чтобы Element 0 ссылался на заготовку Goal из папки /Assets/Prefabs проекта.

Это префаб со спрайтом горы золота, с Box Collider 2D со включенным режимом Is Trigger, добавленным источником звука, и с простым скриптом Goal.cs, воспроизводящим звук достижения цели и перезапускающим уровень, когда игрок попадает в область триггера.

Воспользуйтесь стандартной тайловой кистью для отрисовки одного тайла-префаба цели в верхней части комнаты за ловушками:

Снова запустите игру и попробуйте достичь цели. Когда вы доберётесь до этого тайла, запустится логика OnTriggerEnter2D() из Goal.cs, воспроизведя звуковой эффект и перезапустив уровень.

Последние штрихи

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

Выберите Sprite объектов Player, Goal и ShootingTrap, и сделайте так, чтобы Material компонента Sprite Renderer использовал SpriteLightingMaterial:

Это материал с прикреплённым к нему шейдером Sprite/Diffuse. Он позволяет освещению сцены воздействовать на спрайты.

В GameObject Grid выберите объекты BaseLayer, DungeonFloorDecoration, Collideable и Goal, а потом воспользуйтесь инспектором, чтобы тоже использовать в материале Tilemap Renderer Material SpriteLightingMaterial.

Затем выберите в GameObject Lights Directional light и снизьте значение Intensity Light до 0.3.

Так гораздо лучше!

Также вы сейчас заметите, что Player носит с собой Point light, то есть светящий вокруг него Lantern.

Теперь, когда спрайты в сцене используют подходящий материал, освещение Unity влияет на все окружающие его спрайты.

Перетащите две копии префаба FlickerLight из папки /Assets/Prefabs проекта в Scene и разместите их в GameObject Lights.

Задайте первому префабу позицию (X:-11.25, Y:4, Z:-1.35), а второму — (X:2.75, Y:4, Z:-1.35).

Создайте новый слой Tilemap под названием WallsAndObjects и задайте в инспекторе Tilemap Renderer Order in Layer значение 15. Не забудьте, чтобы Material тоже использовал материал SpriteLightingMaterial.

Переключите кисть палитры тайлов обратно на Default Brush, а Active Tilemap на WallsAndObjects.

Воспользуйтесь инструментом brush (B) для отрисовки двух тайлов «света фонарей» под каждым из новых FlickerLight, которые мы разместили по углам начальной области:

Время трудностей

Посмотрим, сможем ли мы ещё больше улучшить подземелье. Используйте слой Tilemap WallsAndObjects для создания книжных шкафов в верхней части комнаты подземелья с помощью другой палитры тайлов под названием RoguelikeCustom. Также нарисуйте одну-две части стены с трещинами.

Вернитесь обратно в слой Tilemap DungeonFloorDecoration и добавьте ещё немного деталей на мраморный пол, например, трещины на нескольких тайлах:

GIF

Поздравляю, вы завершили свой первый мини-уровень подземелья! В результате у вас должно получиться нечто подобное:

Куда двигаться дальше?

Если вы пропустили какой-то шаг, то можете посмотреть на готовый результат этого туториала, открыв проект Unity Rayzor-final из скачиваемых материалов.

В этом туториале мы научились многому, но как и в любом другом деле, всегда есть что-то ещё!

Существуют интересные скрипты тайловых кистей, не рассмотренные в этом туториале. Прочитайте о них здесь и подумайте, сможете ли вы воспользоваться ими.

Также можете изучить создание анимированных тайлов здесь.

Понравилась статья? Поделить с друзьями:
  • Unity как изменить размер terrain
  • Unity как изменить размер canvas
  • Unity как изменить прозрачность объекта
  • Unity как изменить префаб
  • Unity как изменить позицию объекта через скрипт