Menu
CoddyTech

Площадки для строительства

Урок 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;).

challenge icon

Задание

Средне

Щёлкни по площадке, чтобы построить на ней башню со стрелами.

  1. В BuildPad добавь public Tower tower;.
  2. В BuildManager добавь [SerializeField] private Tower towerPrefab;. В Update, когда Mouse.current.leftButton.wasPressedThisFrame, направь луч через положение мыши.
  3. Если луч попадает в BuildPad, у которого tower равен null, присвой pad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.

Нажми «Играть» и щёлкай по площадкам: на каждой появится башня. Затем нажми «Проверить».

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

using UnityEngine;

// Позже будут добавлены: установка башен нажатием на площадки для строительства, магазин и панель башни.
public class BuildManager : MonoBehaviour
{
}

Все уроки раздела Игра на Unity: Tower Defense

Потренируйтесь самостоятельно: Песочница Unity