recherche
MaisonPériphériques technologiquesIndustrie informatiqueConstruire un clone pong dans Unity: UI et gameplay

Ce tutoriel améliore un clone de base de base construit dans l'unité, ajoutant une esthétique de pong classique, des mécanismes de jeu améliorés et une interface utilisateur de style rétro. Mettons à niveau notre jeu Pong!

PARTIE 2: Retro Revamp & Gameplay amélioré

Ce tutoriel s'appuie sur le précédent clone de Pong. Téléchargez le projet depuis GitHub ou terminez la partie 1 avant de continuer. Une démo de travail et le jeu final amélioré sont également disponibles.

Améliorations de clés:

  • Styling classique: Importer des sprites en noir et blanc, en ajustant les pixels par unité (à 64) pour des visuels rétro authentiques. Changez l'arrière-plan principal de la caméra en noir et mettez à jour les sprites à palette et à balle en conséquence. Créez un diviseur central en utilisant plusieurs sprites blancs à l'échelle.
  • Collisions améliorées: Affinez la manipulation des collisions à billes pour calculer les angles d'impact sur les pagaies, ce qui rend les rebonds plus réalistes. Cela implique la mise à jour de la méthode BallController du script OnCollisionEnter2D pour utiliser la fonction launchAngle. N'oubliez pas de marquer de manière appropriée le joueur et les pagaies ennemies.
  • Amélioration de l'IA ennemie: Mouvement de palette ennemi lisse en utilisant des calculs en fonction du temps, améliorant la réactivité et le défi. Modifiez le script EnemyController pour utiliser InvokeRepeating("Move", .02F, .02F), en ajustant la vitesse et le synchronisation pour une douceur optimale. Ajoutez des limites pour empêcher la palette de l'IA de sortir hors écran. Le script BoundsController doit réinitialiser la position de la pagaie ennemie après la détruire du ballon.
  • Menu de pause rétro: Créez un menu de pause à l'aide d'une police de pixel personnalisée (comme Silkscreen). Incluez les boutons "réinitialiser" et "menu principal" avec des fonctionnalités appropriées. Le script UIManager gère une pause et une reprise, ainsi que des éléments de menu afficher / cacher la pause. Assurez-vous de marquer les éléments du menu de pause avec "showonpause".
  • Menu principal dynamique: Concevoir un menu principal avec un gameplay AI simulé en arrière-plan. Dupliquez la scène principale du jeu, supprimez les éléments inutiles et ajoutez un titre et un bouton "Play". Utilisez les scripts AutoPlayer et AutoEnemy (similaires à l'IA ennemi mais avec des ajustements pour la vitesse et le timing) pour contrôler les pagaies AI dans le menu principal.
  • Système de notation: Implémentez un système de notation qui suit les scores du lecteur et de l'IA, les affiche sur l'interface utilisateur (en utilisant le script PointCounter) et met fin au jeu lorsqu'une limite de score (par exemple, 7 points ) est atteint, affichant un jeu sur l'écran. Le script GameOver affiche le gagnant. N'oubliez pas de marquer le jeu sur des éléments avec "showonfinish".

Building a Pong Clone in Unity: UI and Gameplay

Extraits de code:

(BallController.cs - OnCollisionEnter2d & Launchangle)

void OnCollisionEnter2D(Collision2D col) {
    if (col.gameObject.tag == "Enemy") {
        float y = launchAngle(transform.position, col.transform.position, col.collider.bounds.size.y);
        Vector2 d = new Vector2(1, y).normalized;
        rig2D.velocity = d * speed * 1.5F;
    }
    if (col.gameObject.tag == "Player") {
        float y = launchAngle(transform.position, col.transform.position, col.collider.bounds.size.y);
        Vector2 d = new Vector2(-1, y).normalized;
        rig2D.velocity = d * speed * 1.5F;
    }
}

float launchAngle(Vector2 ball, Vector2 paddle, float paddleHeight) {
    return (ball.y - paddle.y) / paddleHeight;
}

(EnemyController.cs - Move)

void Move() {
    if (ball == null) {
        ball = GameObject.FindGameObjectWithTag("Ball").transform;
    }
    ballRig2D = ball.GetComponent<Rigidbody2D>();
    if (ballRig2D.velocity.x > 0) {
        if (ball.position.y > this.transform.position.y + .5F) {
            transform.Translate(Vector3.up * speed * Time.deltaTime);
        } else if (ball.position.y < this.transform.position.y - .5F) {
            transform.Translate(Vector3.down * speed * Time.deltaTime);
        }
    }
    // ... bounds checking ...
}

(uimanager.cs - partiel)

// ... other methods ...

public void showFinished() {
    foreach (GameObject g in finishObjects) {
        g.SetActive(true);
    }
}

// ... other methods ...

(Pointcounter.cs)

void Update () {
    text.text = rightBound.GetComponent<BoundController>().enemyScore + "\t\t" +
                leftBound.GetComponent<BoundController>().playerScore;
}

(gameover.cs)

void Update () {
    if(uiManager.playerWon){
        text.text = "GAME OVER!\nPLAYER WON!";
    } else if(uiManager.enemyWon){
        text.text = "GAME OVER!\nENEMY WON!";
    }
}

N'oubliez pas d'ajuster les valeurs comme la vitesse et le timing dans les scripts AI pour affiner la difficulté du gameplay. Ce clone Pong amélioré offre une expérience de jeu rétro plus complète et plus engageante. Le lien github (non fourni dans l'entrée) contiendrait les fichiers de projet complets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Avantages du logiciel de télécommunication personnaliséAvantages du logiciel de télécommunication personnaliséMay 11, 2025 am 08:28 AM

Le développement de logiciels de télécommunications personnalisés est sans aucun doute un investissement considérable. Cependant, à long terme, vous pouvez réaliser qu'un tel projet peut être plus rentable car il peut augmenter votre productivité comme toute solution prête à l'emploi sur le marché. Comprendre les avantages les plus importants de la construction d'un système de télécommunications personnalisé. Obtenez les fonctionnalités exactes dont vous avez besoin Il y a deux problèmes potentiels avec le logiciel de télécommunications standard que vous pouvez acheter. Certaines manquent de fonctionnalités utiles qui peuvent améliorer considérablement votre productivité. Parfois, vous pouvez les améliorer avec une certaine intégration externe, mais cela ne suffit pas toujours pour les rendre excellents. D'autres logiciels ont trop de fonctions et sont trop compliqués à utiliser. Vous n'en utilisez probablement pas (jamais!). Un grand nombre de fonctionnalités ajoute généralement au prix. En fonction de vos besoins

CNCF déclenche une percée de parité de plate-forme pour ARM64 et X86CNCF déclenche une percée de parité de plate-forme pour ARM64 et X86May 11, 2025 am 08:27 AM

Puzzles CI / CD et solutions pour les logiciels open source dans l'architecture ARM64 Le déploiement de logiciels open source sur l'architecture ARM64 nécessite un environnement CI / CD puissant. Cependant, il existe une différence entre les niveaux de soutien des architectures de processeur ARM64 et traditionnelles x86, qui sont souvent désavantagées. Les développeurs de composants d'infrastructure pour plusieurs architectures ont certaines attentes pour leur environnement de travail: Cohérence: les outils et méthodes utilisés sur les plateformes sont cohérents, évitant la nécessité de modifier le processus de développement en raison de l'adoption de plateformes moins populaires. Performances: La plate-forme et le mécanisme de support ont de bonnes performances pour garantir que les scénarios de déploiement ne sont pas affectés par une vitesse insuffisante lors de la prise en charge de plusieurs plates-formes. Couverture de test: efficacité, conformité et

Top 21 newsletters du développeur auquel s'abonner en 2025Top 21 newsletters du développeur auquel s'abonner en 2025Apr 24, 2025 am 08:28 AM

Restez informé des dernières tendances technologiques avec ces meilleurs bulletins de développeur! Cette liste organisée offre quelque chose pour tout le monde, des amateurs d'IA aux développeurs assaisonnés du backend et du frontend. Choisissez vos favoris et gagnez du temps à la recherche de rel

Pipeline de traitement d'image sans serveur avec AWS ECS et LambdaPipeline de traitement d'image sans serveur avec AWS ECS et LambdaApr 18, 2025 am 08:28 AM

Ce tutoriel vous guide dans la création d'un pipeline de traitement d'image sans serveur à l'aide de services AWS. Nous allons créer un frontend Next.js déployé sur un cluster ECS Fargate, en interagissant avec une passerelle API, des fonctions lambda, des seaux S3 et DynamoDB. Ème

Pilote CNCF ARM64: impact et perspectivesPilote CNCF ARM64: impact et perspectivesApr 15, 2025 am 08:27 AM

Ce programme pilote, une collaboration entre le CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal et ACTUTIE, rationalise ARM64 CI / CD pour les projets GitHub CNCF. L'initiative répond aux problèmes de sécurité et aux performances LIM

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.