Площадки для строительства
Урок 7 из 25 курса Игра на Unity: Tower Defense на Coddy.
Игрок строит башни, нажимая на серые площадки для строительства. Щелчок — это точка на экране, поэтому он превращается в луч: Camera.main.ScreenPointToRay возвращает луч от камеры через эту точку, а Physics.Raycast сообщает о первом коллайдере, в который он попадает, — том, что находится под мышью.
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
Debug.Log("Clicked " + hit.collider.name);
}Луч также попадает в землю, дорожку и деревья. hit.collider.TryGetComponent(out BuildPad pad) проверяет, является ли объект, в который попал луч, площадкой, поэтому остальные щелчки ничего не делают. Во всех сценах здесь используется Input System, поэтому Mouse.current считывает положение мыши (using UnityEngine.InputSystem;).
Задание
СреднеЩёлкни по площадке, чтобы построить на ней башню со стрелами.
- В
BuildPadдобавьpublic Tower tower;. - В
BuildManagerдобавь[SerializeField] private Tower towerPrefab;. ВUpdate, когдаMouse.current.leftButton.wasPressedThisFrame, направь луч через положение мыши. - Если луч попадает в
BuildPad, у которогоtowerравен null, присвойpad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.
Нажми «Играть» и щёлкай по площадкам: на каждой появится башня. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
// Позже будут добавлены: установка башен нажатием на площадки для строительства, магазин и панель башни.
public class BuildManager : MonoBehaviour
{
}
Все уроки раздела Игра на Unity: Tower Defense
Потренируйтесь самостоятельно: Песочница Unity