Construir plataformas
Lección 7 de 25 del curso Juego de Unity: Defensa de torres de Coddy.
El jugador construye torres al hacer clic en las plataformas de construcción grises. Un clic es un punto en la pantalla, así que se convierte en un rayo: Camera.main.ScreenPointToRay devuelve el rayo desde la cámara a través de ese punto, y Physics.Raycast indica el primer colisionador que alcanza, el que está debajo del ratón.
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
Debug.Log("Clicked " + hit.collider.name);
}El rayo también alcanza el suelo, el camino y los árboles. hit.collider.TryGetComponent(out BuildPad pad) pregunta si el elemento alcanzado es una plataforma, así que los demás clics no hacen nada. Todas las escenas de aquí usan el sistema de entrada, por lo que Mouse.current lee el ratón (using UnityEngine.InputSystem;).
Desafío
IntermedioHaz clic en una plataforma para construir una torre Arrow en ella.
- En
BuildPad, añadepublic Tower tower;. - En
BuildManager, añade[SerializeField] private Tower towerPrefab;. EnUpdate, cuando se cumplaMouse.current.leftButton.wasPressedThisFrame, lanza un rayo desde el ratón. - Si alcanza un
BuildPadcuyotowersea null, asignapad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.
Pulsa «Jugar» y haz clic en las plataformas: habrá una torre en cada una. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
// Más adelante: hacer clic en las plataformas de construcción para colocar torres, la tienda y el panel de torres.
public class BuildManager : MonoBehaviour
{
}
Todas las lecciones de Juego de Unity: Defensa de torres
2Torres
Construir plataformasPractica por tu cuenta: Playground de Unity