L’arène
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 56 sur 63.
Ce chapitre crée Arena Escape. Tu esquives des chasseurs dans une arène fortifiée tandis que des vagues de chasseurs déferlent ; trois coups mettent fin à la partie et, une fois la dernière vague éliminée, une sortie s'ouvre. Le jeu comporte cinq scripts, présents dans le projet dès le début : Player, Hunter, Spawner, Health et Exit. Les quatre derniers sont vides pour l'instant, et chaque leçon en complète un.
Le joueur se déplace grâce à des forces plutôt qu'en définissant sa vitesse, si bien que la poussée d'un chasseur s'ajoute à son mouvement au lieu de l'annuler. Une poussée seule l'accélérerait indéfiniment ; linearDamping réduit donc sa vitesse d'une certaine quantité à chaque étape : une poussée constante finit par atteindre une vitesse maximale correspondant à environ l'accélération divisée par l'amortissement. Ce traîneau aéroglisseur avance tant que la barre d'espace est maintenue enfoncée :
[SerializeField] private float accel = 12f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.linearDamping = 2f;
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.Space))
{
rb.AddForce(transform.forward * accel, ForceMode.Acceleration);
}
}Avec une accélération de 12 et un amortissement de 2, le traîneau atteint une vitesse maximale d'environ 6 unités par seconde. Lorsque la barre d'espace est relâchée, l'amortissement l'arrête au lieu de le laisser glisser indéfiniment. ForceMode.Acceleration ne tient pas compte de la masse : un traîneau lourd accélère exactement comme un traîneau léger. Le collider du traîneau possède un PhysicsMaterial sans frottement : avec le frottement du sol en plus de l'amortissement, sa vitesse maximale serait plus faible.
Défi
MoyenDémarre Arena Escape avec le joueur. L’inspecteur attribue au script Player les valeurs accel (18) et topSpeed (6). Le joueur a une masse de 2 et un matériau sans friction, et les quatre autres scripts restent vides pour le moment.
- Dans
Start, définis lelinearDampingdu Rigidbody àaccel / topSpeed, afin que le joueur atteigne une vitesse constante d’environtopSpeed. - À chaque étape physique, pousse le joueur à l’aide des flèches : gauche et droite le long de l’axe x, et haut et bas le long de l’axe z, en utilisant
ForceMode.Accelerationet une accélération deaccel. - Normalise la direction indiquée par les flèches afin qu’un déplacement en diagonale ne soit pas plus rapide qu’un déplacement en ligne droite.
Appuie sur Play et glisse dans l’arène, puis clique sur Check.
Essayez vous-même
using UnityEngine;
public class Player : MonoBehaviour
{
[SerializeField] private float accel = 18f;
[SerializeField] private float topSpeed = 6f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// règle l'amortissement, puis déplace le joueur avec les touches fléchées
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Physique et gameplay
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser