Menu
CoddyTech

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;).

challenge icon

Défi

Moyen

Clique sur une plateforme pour y construire une tour Arrow.

  1. Dans BuildPad, ajoute public Tower tower;.
  2. Dans BuildManager, ajoute [SerializeField] private Tower towerPrefab;. Dans Update, lorsque Mouse.current.leftButton.wasPressedThisFrame est activé, lance un rayon à travers la souris.
  3. S’il touche un BuildPad dont tower est null, définis pad.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