Construire des plateformes
Leçon 7 sur 25 du cours Jeu Unity : défense de tours de Coddy.
Le joueur construit des tours en cliquant sur les plateformes de construction grises. Un clic correspond à un point à l’écran, il devient donc un rayon : Camera.main.ScreenPointToRay renvoie le rayon de la caméra qui traverse ce point, et Physics.Raycast indique le premier collider qu’il touche, celui qui se trouve sous la souris.
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
Debug.Log("Clicked " + hit.collider.name);
}Le rayon touche également le sol, le chemin et les arbres. hit.collider.TryGetComponent(out BuildPad pad) vérifie si l’objet touché est une plateforme, afin que les autres clics ne fassent rien. Toutes les scènes utilisent ici l’Input System, donc Mouse.current lit la souris (using UnityEngine.InputSystem;).
Défi
MoyenClique sur une plateforme pour y construire une tour Arrow.
- Dans
BuildPad, ajoutepublic Tower tower;. - Dans
BuildManager, ajoute[SerializeField] private Tower towerPrefab;. DansUpdate, lorsqueMouse.current.leftButton.wasPressedThisFrameest activé, lance un rayon à travers la souris. - S’il touche un
BuildPaddonttowerest null, définispad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.
Appuie sur « Jouer » et clique sur les plateformes : une tour se trouve sur chacune d’elles. Puis clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
// À venir : cliquer sur les emplacements de construction pour placer des tours, la boutique et le panneau des tours.
public class BuildManager : MonoBehaviour
{
}
Toutes les leçons de Jeu Unity : défense de tours
Entraînez-vous par vous-même : Playground Unity