Підручник мінікарти оглядового типу для Unity
Ігрові рівні бувають різних форм і форм, від простих 2D-рівнів до складніших 3D-рівнів із величезними просторами та коридорами.
Мінімапа — це мініатюрна карта, яка зазвичай розміщується в кутку екрана та часто використовується у відеоіграх, щоб допомогти гравцям орієнтуватися на рівні гри.
У цьому підручнику я покажу, як створити круглу мінікарту в Unity, використовуючи полотно інтерфейсу користувача.
Кроки
Для контролера програвача я буду використовувати цей FPS Controller.
Щоб створити міні-карту, виконайте наведені нижче дії.
- Відкрийте Сцену з вашим рівнем гри
- Створіть новий UI Canvas, якщо у вас його немає (GameObject -> UI -> Canvas)
- Створіть нове зображення, клацнувши правою кнопкою миші Canvas -> UI -> Image
- Призначте наведений нижче спрайт до зображення (клацніть правою кнопкою миші, щоб завантажити зображення)
- Змініть вирівнювання зображення вгорі ліворуч і поворот на (0, 1)
- Створіть нове необроблене зображення, натиснувши Canvas -> UI -> Raw Image (переконайтеся, що необроблене зображення розміщено перед радарним зображенням в ієрархії, щоб воно відтворювалося позаду).
- Створіть нову камеру, назвіть її "Minimap_Camera", розташуйте її над плеєром і направте вниз
- Видалити аудіослухач із "Minimap_Camera"
- Створіть нову текстуру візуалізації (у режимі перегляду проекту «Створити» -> «Текстура візуалізації») і назвіть її "MinimapTexture"
- Призначте новостворену текстуру візуалізації до "Minimap_Camera" цільової текстури
- Призначте "MinimapTexture" текстурі необробленого зображення
Тепер нам потрібно додати маску спрайту, щоб зображення було гарно обрізаним:
- Дублюйте зображення радара
- Змініть текстуру копійованого зображення на спрайт нижче (клацніть правою кнопкою миші, щоб завантажити зображення):
- Додайте компонент Mask до зображення маски
- Перемістіть необроблене зображення з текстурою візуалізації всередину зображення маски
Тепер остаточне зображення має бути обрізане:
Як бачите, міні-карта Camera показує карту такою, як вона є, включаючи гравця та будь-які динамічні об’єкти, але це не те, чого ми хочемо, ми хочемо показати лише карту без жодних динамічних об’єктів.
- Зробіть скріншот верхнього вигляду карти (перед цим деактивуйте будь-які динамічні об’єкти, такі як гравці, вороги тощо)
- Створіть новий Quad (GameObject -> 3D Object -> Quad) і розмістіть його під картою, як це:
- Призначте скріншот Quad і змініть матеріал Shader "Unlit/Texture"
- Переконайтеся, що позиція знімка екрана на квадроциклі відповідає карті:
- Змінити шар Quad мінікарти на "UI"
- У "Minimap_Camera" змініть Culling Mask на "UI"
- Створіть інший Quad і перемістіть його всередину об’єкта "Minimap_Camera", призначте йому зображення нижче:
- Змініть шейдер на стрілці Quad на "Unlit/Transparent"
- Змініть шар Quad зі стрілкою на "UI"
Ось кінцевий результат:
- Створіть новий сценарій, назвіть його "SC_MinimapCamera" і вставте в нього наведений нижче код:
SC_MinimapCamera.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SC_MinimapCamera : MonoBehaviour
{
public Transform target;
float defaultPosY;
// Start is called before the first frame update
void Start()
{
defaultPosY = transform.position.y;
}
// Update is called once per frame
void Update()
{
// Apply position
transform.position = new Vector3(target.position.x, defaultPosY, target.position.z);
// Apply rotation
transform.rotation = Quaternion.Euler(90, target.eulerAngles.y, 0);
}
}
- Приєднайте сценарій SC_MinimapCamera до об’єкта "Minimap_Camera".
- Призначте свого гравця змінній Target у SC_MinimapCamera.
Тепер міні-карта готова, щоб використовувати її, просто пройдіться рівнем і спостерігайте за зміною позиції.