Comment faire un contrôleur de jeu personnalisé avec arduino et de l`unité
Avez-vous toujours voulu concevoir votre propre contrôleur de jeu? Il est plus facile que vous le pensez!
Contenu
- Video: fabriquer une trottinette électrique !
- Pour ce projet, vous aurez besoin
- Assemblage du contrôleur
- Préparation de votre arduino
- Configuration de votre projet unity
- Maintenant, pour faire quelque chose que nous pouvons contrôler
- Il est temps de codage
- Premiers signes de vie
- Déplaçons cette sphère
- Pourquoi faire des maths quand l`unité va le faire pour vous?
- Mettre le bouton au travail
- Video: fabriquer son flipper (benhur 2016)
- Le projet fini
Dans ce court projet, nous allons construire d`un simple contrôleur de jeu personnalisé à utiliser avec le moteur de jeu Unity. Ce contrôleur sera alimenté par un Arduino Uno, mais vous pouvez utiliser l`un des de nombreuses alternatives là-bas pour ce projet aussi. Nous allons également créer un jeu de base où vous utiliserez votre contrôleur pour éviter les chutes d`objets et ralentir le temps.Guide d`achat Arduino: Quel conseil devriez-vous obtenir?Guide d`achat Arduino: Quel conseil devriez-vous obtenir?Il y a tellement de différents types de cartes Arduino là-bas, vous seriez pardonné d`être confus. Que devriez-vous acheter pour votre projet? Aidons, avec ce guide d`achat Arduino!Lire la suite
Video: Fabriquer une trottinette électrique !
Pour ce projet, vous aurez besoin
- Arduino ou un microcontrôleur similaire
- 1 x résistance de 10K Ohm
- 1 x interrupteur momentané
- 1 x Potentiomètre
- fils de branchement
- Une planche à pain
- moteur de jeu Unity
- Le plugin Unity Uniduino Asset Store (30 $)
- code complet du projet, dans le cas où vous ne voulez pas l`écrire (ne comprend pas le plug-in Uniduino)
La plupart de ces choses sont disponibles dans un kit de démarrage Arduino. Si n`ont pas obtenu un kit de démarrage consultez notre guide pour choisir le meilleur Un pour toi.4 Les meilleurs kits de démarrage pour les débutants Arduino4 Les meilleurs kits de démarrage pour les débutants ArduinoIl y a beaucoup de grands projets Arduino de débutant que vous pouvez utiliser pour commencer, mais vous aurez besoin d`un Arduino et quelques premiers composants. Voici notre sélection de 4 des meilleurs kits de démarrage pour ...Lire la suite
Vous pouvez faire votre contrôleur aussi compliqué que vous le souhaitez, mais pour cet exemple, nous allons mettre en place un potentiomètre et un bouton - parfait pour contrôler un jeu d`arcade simple.
Assemblage du contrôleur
Configurez votre carte de test et Arduino comme le montre l`image ci-dessous. C`est ce que nous allons utiliser notre contrôleur de jeu, bien que vous pouvez utiliser à peu près la même configuration exacte comme contrôleur midi bricolage aussi!Comment faire un contrôleur MIDI avec un ArduinoComment faire un contrôleur MIDI avec un ArduinoEn tant que musicien qui a amassé une collection d`instruments de musique et des boîtes de bruit, l`humble Arduino est l`outil idéal pour créer un contrôleur MIDI personnalisé.Lire la suite
Préparation de votre Arduino
Une fois que vous avez tout câblé, connectez votre Arduino via USB. Dans la tête logiciel Arduino IDE Outils gt; Planche et Outils gt; Port pour sélectionner le microcontrôleur et le port que vous utilisez. L`Arduino IDE est livré avec le croquis dont nous avons besoin, et vous pouvez le trouver sous Fichier gt; Exemples gt; firmata gt; StandardFirmata. Cliquez sur Télécharger et vous serez prêt à partir.
Si vous êtes nouveau Arduino et votre tête est en train de fondre légèrement, consultez notre Guide du débutant pour vous aider à l`obtenir parler avec votre ordinateur bien.Mise en route avec Arduino: Guide du débutantMise en route avec Arduino: Guide du débutantArduino est une plate-forme de prototypage électronique open source basée sur flexible, facile à utiliser du matériel et des logiciels. Il est destiné aux artistes, designers, amateurs, et toute personne intéressée par la création d`objets interactifs ou des environnements.Lire la suite
Configuration de votre projet Unity
Dans l`unité, ouvrez Fenêtre gt; Magasin d`actifs pour accéder Asset Store Unity à partir de l`éditeur Unity. Rechercher Asset Store pour le plug-in Uniduino. Ce plugin vous permettra de recevoir et d`envoyer des données vers et à partir de vos broches Arduino à l`intérieur de l`unité. Le plug-in au moment de l`écriture coûte 30 $. Il est possible de faire ce projet sans acheter le plug-in, mais il est un peu plus compliqué et vous pouvez trouver le plugin plus toute pratique.
Cette vidéo des créateurs du plugin vous emmène à travers le processus de tout test fonctionne, ainsi que de la première installation. Notez que vous pouvez également réinitialiser l`éditeur Unity sous Windows.
Nous pouvons utiliser ce même panneau de test pour tester notre contrôleur. Set Pin D2 INPUT et numérique. Plus bas, réglez Pin A5 à ANALOG. Votre potentiomètre et le bouton doit afficher les valeurs à l`écran à côté de leurs numéros de broches maintenant. Le progrès!
Maintenant, pour faire quelque chose que nous pouvons contrôler
Nous avons donc un contrôleur, mais qu`allons-nous contrôler? Eh bien, les possibilités sont infinies, mais aujourd`hui nous allons créer un jeu esquivant très simple pour tester notre nouveau système de contrôle. Nous allons passer au-dessus de la configuration du jeu assez rapidement, donc si vous êtes totalement nouveau pour le moteur Unity vous pouvez trouver nos Unité Programmation Jeu Guide du débutant utiles pour vos roulements.Programmation d`un jeu avec l`unité: Guide du débutantProgrammation d`un jeu avec l`unité: Guide du débutantDans le paysage en évolution du développement de jeux indépendant, l`unité a émergé comme quelque chose d`une norme de facto: son faible coût, facilité d`utilisation et un large jeu de fonctionnalités le rendent idéal pour le développement de jeux rapide.Lire la suite
Nous allons construire un jeu très basique dans lequel votre but est d`esquiver votre sphère à gauche et à droite pour éviter les cubes qui tombent, qui utilisera votre contrôleur personnalisé récemment fait.
Créer une nouvelle scène et faites glisser le bâtiment préfabriqué Uniduino de Les atouts gt; Uniduino gt; préfabriqués dans votre hierachy et faites glisser le bâtiment préfabriqué Uniduino dans la hiérarchie. Nous en avons besoin là pour faire parler entre notre jeu et le contrôleur.
Dans la hiérarchie Unity cliquez Créer gt; Sphère et utiliser Transformer onglet dans l`inspecteur pour le déplacer vers le bas de l`écran de jeu.
Il est temps de codage
Maintenant, pour ajouter du code à ce parti. Avec la sphère sélectionnée dans la hiérarchie, cliquez sur Ajouter un composant gt; nouveau script au bas de sa fenêtre Inspecteur. Nomme le sphereMover et sélectionnez C de Sharp à partir du menu déroulant. Cliquez Créer et Ajouter et le script sera ajouté à la gameobject. Double-cliquez dessus pour ouvrir le script et entrez ce code:
en utilisant UnityEngine-en utilisant Système.collections-en utilisant Uniduino-public classe sphereMover : MonoBehaviour{// En-têtes ne sont pas scrictly neccesary, mais ils rendent la vie plus facile de retour dans l`inspecteur.[Entête("Variables Arduino")]// nous devons déclarer l`Arduino comme variablepublic Arduino-// nous devons déclarer un entier pour le nombre de broches de notre potentiomètre,// rendant ces variables moyens publics, nous pouvons les changer dans l`éditeur plus tard// si l`on change la mise en page de notre arduinopublic int potPinNumber-// une variable flottante pour maintenir la valeur du potentiomètre (0-1023)public flotte potValue-// nous plus tard que potValue à remapper la position y de notre capsule et le maintenir dans cette variablepublic flotte mappedPot-// int public pour notre broche de boutonpublic int buttonPinNumber-[Entête("Variables Sphere")]// variables pour tenir les valeurs que nous avons noté plus haut pour les côtés de notre écranpublic flotte leftEdge-public flotte rightEdge-// Utilisez cette initialisationvide Début (){// et initialiser nous allons, en commençant par la variable Arduino. // nous utilisons seulement un arduino, afin que nous puissions utiliser Arduino.global pour la saisir.arduino = Arduino.global-arduino.Installer(ConfigurePins)-}vide ConfigurePins(){// configurer la broche Arduino être analogique pour notre potentiomètrearduino.pinMode(potPinNumber, pinMode.ANALOGIQUE)-// Dites à l`Arduino pour signaler tout changement de la valeur de notre potentiomètrearduino.reportAnalog(5, 1)-// configurer notre broche Boutonarduino.pinMode(buttonPinNumber, pinMode.CONTRIBUTION)-arduino.reportDigital((octet)(buttonPinNumber / 8), 1)-}}
Prenez un moment pour lire les commentaires du code. Nous avons encore déclaré certaines variables pour notre Arduino, ses broches et notre sphère. Nous avons également utilisé la
Début et méthodes ConfigurePins pour initialiser notre Arduino sur le temps d`exécution. Permet de sauvegarder notre script, et revenir dans l`éditeur Unity et voir ce qui a changé.
Nous pouvons maintenant voir nos variables publiques dans la fenêtre Inspecteur. Voyons voir ce que nous pouvons entrer à ce stade pour nous aider plus tard. Nous savons ce que la broche de nous utilisons sur l`Arduino de notre version antérieure, nous pouvons les saisir. Nous savons aussi de notre expérience antérieure jusqu`où nous voulons que notre sphère pour pouvoir voyager gauche et à droite pour qu`il ne tombe pas hors de l`écran. Permet de saisir ces valeurs maintenant.
Premiers signes de vie
Il est temps de voir réellement les valeurs de notre Arduino dans l`éditeur Unity. Pour l`instant, nous pouvons ajouter une ligne de code à notre fonction de mise à jour du script sphereMover et enregistrer à nouveau le script.
vide Mettre à jour (){// Nous attribuons la valeur du arduino est en train de lire notre potentionmeter à notre variable potValuepotValue = arduino.analogRead(potPinNumber)-}
Maintenant que nous avons notre variable potValue mise à jour chaque image, nous pouvons voir sa valeur en temps réel dans l`unité Inspecteur. Avant de donner un test, maintenant serait un bon moment pour vérifier que la prise Uniduino en écoute sur le port droit. Cliquez sur Uniduino dans la hiérarchie, et vérifier si elle est le nom du port dans l`inspecteur. Si elle est vide, remplissez le numéro de port correct pour votre Arduino. Dans ce cas, il était COM4, mais il peut être différent pour vous. Vérifiez que vous utilisez l`IDE Arduino si vous n`êtes pas sûr.
Sélectionnez votre sphère dans la hiérarchie, puis cliquez sur le bouton Lecture en haut de l`écran. Le système a besoin de quelques secondes pour initialiser, après quoi vous devriez commencer à voir le changement de variable Pot Valeur dans l`inspecteur lorsque vous déplacez le potentiomètre.
Maintenant, nous parlons! Eh bien, strictement parlant l`unité et l`Arduino parlent, mais qui compte? Si vous avez loin et ne sont pas voir le changement de valeur dans l`inspecteur, vérifier au cours des étapes de configuration, et assurez-vous que vous avez le bon port est sélectionné pour votre Arduino.
Déplaçons Cette sphère
Maintenant que nous avons à la variable potValue être mis à jour, nous voulons utiliser cette valeur pour déplacer notre sphère. Lorsque le potentiomètre est tout le chemin à gauche, nous voulons que la sphère soit sur le côté gauche de l`écran, et vice versa. Les objets dans l`unité sont positionnés à un point dans l`espace vectoriel, déterminé par les valeurs de c`est transform.position. Dans l`image ci-dessous, où la sphère est au point le plus à gauche, nous voudrions, vous pouvez voir que c`est vecteur de position est de 9,5, -4, 0.
Nous voulons influer sur la position X de la sphère. Malheureusement, en utilisant les valeurs de notre potentiomètre directement ne fonctionnera pas, comme lorsque le potentiomètre est tout le chemin à gauche donne une valeur de 0 - ce qui mettrait notre sphère en plein milieu de l`écran. À l`autre extrême, haut valeur du potentiomètre, 1023, placerait le chemin de cube à droite de notre écran. Pas utile. Ce que nous avons besoin ici est un peu de maths.
Pourquoi faire des maths Quand l`unité va le faire pour vous?
Pour ceux d`entre vous redoutant là les yeux fixés sur un morceau de papier couvert de chiffres insensées (bien qu`il y ait quelques-uns grands sites qui peut vous aider à apprendre les mathématiques), ne craignez pas. Nous devons trouver un moyen de rendre nos valeurs de potentiomètre pour correspondre à la position X de notre sphère. Heureusement, nous pouvons utiliser un Méthode d`extension.Les 20 sites internet que vous devez apprendre les mathématiques étape par étapeLes 20 sites internet que vous devez apprendre les mathématiques étape par étapeNous avons compilé les meilleurs sites pour chaque niveau afin que vous puissiez apprendre systématiquement, acquérir une meilleure compréhension des mathématiques d`un niveau à la fois, et amusez-vous!Lire la suite
Une méthode d`extension est un script qui fait pour nous un travail spécifique. Dans ce cas, nous ne donnons les valeurs que nous avons, et il les renvoie mis en correspondance avec un autre un, prêt à être utilisé dans notre sphereMover scénario. En haut du panneau du projet, cliquez sur Créer gt; C # Script et nommez-le ExtensionMethods. Entrez le code ci-dessous dans le script:
en utilisant UnityEngine-en utilisant Système.collections-public statique classe ExtensionMethods {// notre fonction Remapper pratique dandypublic statique flotte remap (ce flotte valeur, flotte partir du 1 er, flotte à1, flotte de2, flotte à2){revenir (valeur - partir du 1 er) / (à1 - partir du 1 er) * (à2 - de2) + de2-}}
Enregistrez le script, et retourner à votre script sphereMover. Nous pouvons maintenant utiliser cette fonction Remap dans notre script ExtensionMethods dans notre fonction de mise à jour pour convertir nos valeurs du potentiomètre en valeurs utilisables dans notre jeu. Sous où nous vient d`assigner la variable potValue, tapez ce qui suit:
L`invite nous montre que notre Remap prend deux ensembles de valeurs en provenance et à, et les cartes ensemble. Nous pouvons entrer dans nos valeurs dans ce.
mappedPot = potValue.remap(0, 1023, leftEdge, rightEdge)-
Enregistrez votre script, retournez à l`éditeur Unity, et appuyez sur le bouton de lecture. Vous devriez voir que les changements variables Pot mappées lorsque vous déplacez le potentiomètre, pour correspondre avec les valeurs que nous déterminés pour nos côtés gauche et droit. Prenez un moment pour vous asseoir et remercier votre script ExtensionMethods. Pas une calculatrice en vue.
Remarque: si vous remarquez que vos valeurs sont inversées, alors quand votre potentiomètre est tout le chemin à droite, vous obtenez une valeur négative pour votre variable Pot mappée, vous pouvez avoir votre potentiomètre mis en place dans le mauvais sens. Heureusement, vous pouvez corriger cela sans faire de recâblage. Vous pouvez tout simplement passer les valeurs lorsque vous les remappez:
Maintenant, nous avons enfin des valeurs utilisables. Maintenant, tout ce qui reste à faire est d`attribuer ces valeurs à la position X de notre sphère:
// Affecte la valeur du pot mis en correspondance avec la position x de la sphèretransformer.position = Nouveau Vector3(mappedPot, transformer.position.y, transformer.position.z)-
Enregistrez votre script, retournez à l`éditeur Unity et le jeu de la presse. Vous devriez maintenant être en mesure de déplacer votre sphère à gauche et à droite en utilisant votre potentiomètre!
Mettre le bouton au travail
Maintenant que nous avons notre mouvement de la sphère, ne serait-il pas agréable d`avoir un moyen de ralentir un peu les choses quand nous dans un endroit serré? Nous allons utiliser notre bouton pour ralentir le temps dans notre jeu. Ouvrez votre script sphereMover et ajoutez ce code à votre fonction de mise à jour
// Si l`unité détecte le bouton est pressé, l`échelle de temps ralentitsi (arduino.digitalRead(buttonPinNumber) == 1){Temps.timeScale = 0.4f-}autre Temps.timeScale = 1.0f-
Maintenant, nous avons la mécanique de notre jeu, nous allons ajouter quelques obstacles! Nous allons utiliser l`ennemi naturel de la sphère, le cube. Dans la hiérarchie, cliquez sur Créer gt; objet 3D gt; cube. Dans l`inspecteur du cube, Ajouter un composant gt; La physique gt; Corps rigide. Réglez la valeur de traînée du à 5. En outre modèle du solide indéformable, sous le composant collisionneur Box dans l`inspecteur, sélectionnez Trigger Is. Cela nous permettra de détecter les collisions avec notre sphère.
Video: Fabriquer son flipper (BENHUR 2016)
Créer un script sur le cube et l`appeler collideWithSphere, ouvrez le script et supprimer les fonctions de début et de mise à jour que nous ne serons pas besoin d`eux cette fois-ci. Entrez ce code:
en utilisant UnityEngine-en utilisant Système.collections-public classe collideWithSphere : MonoBehaviour{vide OnTriggerEnter(collisionneur autre){Détruire(autre.gameobject)-}}
OnTriggerEnter envoie un message chaque fois que le collisionneur de déclenchement frappe un autre collisionneur. Dans ce cas, nous disons à détruire tout ce qu`il touche. Enregistrez le script et retourner à l`éditeur Unity. Faites glisser le cube de la hiérarchie dans le panneau Projet. Vous remarquerez le texte du cube dans la hiérarchie est devenu bleu. En effet, nous avons créé un bâtiment préfabriqué et enregistré dans notre projet. Supprimer votre cube de la hiérarchie maintenant.
Tout nous avons besoin est maintenant un script pour reproduire les cubes. Dans la hiérarchie, cliquez Créer gt; Créer vide, et renommez-Manager de jeu dans l`inspecteur et ajouter un script qu`il a appelé gameManager. Ouvrez le script et ajoutez ce code:
en utilisant UnityEngine-en utilisant Système.collections-public classe gameManager : MonoBehaviour {// une variable pour tenir la maison préfabriquée que nous voulons reproduirepublic cube gameobject-// nous voulons certaines variables de décider comment les cubes de se reproduire // et comment au-dessus de nous, nous les voulons frayentpublic int numberToSpwan-public flotte lowestSpawnheight-public flotte highestSpawnheight-// Utilisez cette initialisationvide Début (){pour (int je = 0- je lt; numberToSpwan- je++){instancier(cube, Nouveau Vector3(au hasard.Gamme(-9, 9), au hasard.Gamme(lowestSpawnheight, highestSpawnheight), 0), quaternion.identité)-}}// Mise à jour est appelée une fois par imagevide Mettre à jour (){}}
Enregistrez le script. Retour dans l`éditeur, sélectionnez le gestionnaire de jeu dans la hiérarchie, et faites glisser votre cube prefab à partir du panneau de projet à la variable Cube dans l`inspecteur. Remplissez les valeurs de votre fraie ici aussi. Vous pouvez jouer avec lui pour le rendre aussi difficile ou facile que vous le souhaitez. Notez qu`il est utile d`avoir vos cubes les plus bas frayent suffisamment élevé pour permettre Uniduino d`initialiser - perdre le jeu avant de pouvoir se déplacer peut être frustrant!
Le projet fini
Maintenant, lorsque vous appuyez sur le jeu, les cubes engendreront ci-dessus vous et tomber. Vous pouvez utiliser votre potentiomètre pour les éviter, et votre bouton pour ralentir le temps.
Dans ce projet, nous avons créé un contrôleur personnalisé avec un Arduino, configuré l`unité et Uniduino pour communiquer avec lui, et a créé un jeu simple pour le tester. Les concepts ici peuvent être appliqués à presque tous les projets, et il y a même des confitures de jeu qui se spécialisent dans les contrôleurs personnalisés.
Avec Arduino et Unity vous pouvez créer un contrôleur personnalisé à partir de presque rien. Avez-vous créé un salut-fi qui contrôle un vaisseau spatial? Un grille-pain qui contrôle un jeu de plate-forme?
Si vous avez fait un projet comme celui-ci, j`aimerais voir! Poster dans les commentaires ci-dessous!