Récapitulatif : changement de système d’entrée
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 47 sur 56.
Défi
MoyenCette baguette à bulles a été écrite pour l’ancienne classe Input. Elle fonctionne dans un projet configuré sur Both, mais ce projet est configuré comme un nouveau projet Unity 6 (Active Input Handling: Input System Package) : appuyez sur Play et le premier appel à Input déclenche une InvalidOperationException. Portez-la vers l’Input System en conservant toutes ses fonctionnalités :
- Les flèches ou WASD font avancer la baguette sur la pelouse à
speedunités par seconde, sans aller plus vite en diagonale. - Appuyer sur Jump souffle une bulle à 1.5 unité au-dessus de la baguette. Tant que Jump est maintenu, cette bulle grandit de
growRatepar seconde, jusqu’àmaxSize. Quand vous relâchez, sa taille est affichée dans le journal, par exempleBubble: 0.8. - Un clic gauche fait éclater toutes les bulles et affiche leur nombre dans le journal, par exemple
Popped 3.
Utilisez les actions Move et Jump du projet ainsi que Mouse.current, et ne laissez aucun appel à Input. dans le script. Appuyez sur Play et essayez, puis cliquez sur Check.
Essayez vous-même
using UnityEngine;
public class Wand : MonoBehaviour
{
public float speed = 4f;
public float growRate = 1f;
public float maxSize = 1.5f;
public GameObject bubblePrefab;
private Transform bubble;
void Update()
{
Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
transform.position += move.normalized * speed * Time.deltaTime;
if (Input.GetButtonDown("Jump"))
{
bubble = Instantiate(bubblePrefab, transform.position + Vector3.up * 1.5f, Quaternion.identity).transform;
}
if (Input.GetButton("Jump") && bubble != null)
{
float size = Mathf.Min(bubble.localScale.x + growRate * Time.deltaTime, maxSize);
bubble.localScale = Vector3.one * size;
}
if (Input.GetButtonUp("Jump") && bubble != null)
{
Debug.Log("Bubble: " + bubble.localScale.x.ToString("F1"));
bubble = null;
}
if (Input.GetMouseButtonDown(0))
{
GameObject[] bubbles = GameObject.FindGameObjectsWithTag("Bubble");
foreach (GameObject b in bubbles) Destroy(b);
Debug.Log("Popped " + bubbles.Length);
}
}
}
Toutes les leçons de Créer de vrais jeux
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque3Le gestionnaire du jeu
Un seul script gère le jeuLe SingletonLes états du jeuBasculer selon l’étatRécapitulatif : gestionnaire de manche6Projet : course sans fin
Trois voiesObstacles en vue9Le nouveau système d’entrée
Deux systèmes d’entréeClavier et sourisAppuyé pendant cette frameActions d’entréeRécapitulatif : changement de système d’entrée