Como hacer un dispositivo de juego personalizado con arduino y la unidad

Alguna vez has querido diseñar su propio dispositivo de juego? ¡Es más fácil de lo que piensas!

En este breve proyecto vamos a construir un dispositivo de juego personalizado simple de usar con el motor del juego Unidad. Este controlador estará propulsado por un Arduino Uno, aunque se puede utilizar una de las muchas alternativas que hay para este proyecto también. También vamos a crear un juego básico en el que va a utilizar el controlador para evitar la caída de objetos y ralentizar el tiempo.Arduino Guía de compra: ¿Qué Junta debe llegar?Arduino Guía de compra: ¿Qué Junta debe llegar?Hay tantos tipos diferentes de placas Arduino por ahí, que sería perdonado por ser confundidos. ¿Qué debe usted comprar para su proyecto? Vamos a ayudarle, con esta guía de compra Arduino!Lee mas

Para este proyecto que va a necesitar

  • Arduino o microcontrolador similares
  • 1 x 10k resistencia de Ohm
  • 1 x interruptor momentáneo
  • 1 x Potenciómetro
  • alambras interconexion
  • Un tablero
  • motor de juego de la unidad
  • El plug-in Uniduino de la Unidad de Activos tienda ($ 30)
  • código completo del proyecto, en caso de que no quiere escribirlo (no incluye el plugin Uniduino)

La mayoría de estas cosas están disponibles en un kit de iniciación Arduino. Si no han conseguido un kit de iniciación visita nuestra guía para elegir el mejor uno para ti.4 Mejores Starter Kits para Arduino principiantes4 Mejores Starter Kits para Arduino principiantesHay un montón de grandes proyectos para principiantes de Arduino que se puede utilizar para empezar, pero tendrá un Arduino y algunos componentes primero. Aquí está nuestra selección de 4 de los mejores kits de iniciación para ...Lee mas

Puede hacer que su controlador tan complicado como usted desea, aunque para este ejemplo vamos a configurar un potenciómetro y un botón - perfecto para el control de un simple juego de arcade.

Controlador de costumbre cortar el pan 670

Montaje de su controlador

Configurar el tablero y Arduino como se muestra en la imagen de abajo. Esto es lo que vamos a utilizar como nuestro dispositivo de juego, si bien se puede utilizar casi exactamente la misma configuración como una controlador midi DIY ¡también!Cómo hacer un controlador MIDI con un ArduinoCómo hacer un controlador MIDI con un ArduinoComo músico que ha acumulado una colección de instrumentos musicales y cajas de ruido, el humilde Arduino es la herramienta perfecta para crear un controlador MIDI personalizado.Lee mas

El diagrama anotado Fritzing

Cómo preparar a su Arduino

Una vez que todo cableado, conecte el Arduino a través de USB. En Arduino IDE Software a la cabeza Herramientas gt; Tablero y Herramientas gt; Puerto para seleccionar el microcontrolador y el puerto que está utilizando. El IDE de Arduino viene incluido con el boceto que necesitamos, y se pueden encontrar en los términos Archivo gt; Ejemplos gt; firmata gt; StandardFirmata. Haga clic en Cargar y usted estará listo para funcionar.

Si usted es nuevo en Arduino y su cabeza está derritiendo poco, echa un vistazo a nuestra Guía para principiantes para ayudarle a conseguir que hablar con el equipo muy bien.Primeros pasos con Arduino: una guía para principiantesPrimeros pasos con Arduino: una guía para principiantesArduino es una plataforma electrónica de prototipos de código abierto basado en flexible y fácil de usar hardware y software. Está pensado para artistas, diseñadores, aficionados y cualquier persona interesada en la creación de objetos interactivos o ambientes.Lee mas

Configuración de la Unidad de Proyectos

En Unidad, abrir Ventana gt; activos tienda acceder a la tienda de la Unidad de activos desde el Editor de la Unidad. Buscar en el almacén de activos para el plugin Uniduino. Este plugin le permitirá recibir y enviar datos desde y hacia sus pines de Arduino dentro de la Unidad. El plug-in en el momento de la escritura cuesta $ 30. Es posible hacer este proyecto sin tener que comprar el plugin, aunque es bastante más complicado y puede que el plugin más conveniente a su alrededor.

Unidad de Activos tienda Uniduino

Este video de los creadores del plugin que lleva a través del proceso de probar que todo funciona, junto con la instalación por primera vez. Tenga en cuenta que también puede tener que reiniciar el editor de Unity en Windows.

Podemos utilizar este mismo panel de prueba para probar nuestra controlador. Establecer Pin D2 a INPUT y digital. Más abajo, establecer Pin A5 a analógico. Su potenciómetro y el botón deben mostrar los valores que aparecen en pantalla junto a sus números de pin ahora. ¡Progreso!

Prueba Uniduino

Ahora para hacer algo que podemos controlar

Así que tenemos un controlador, pero ¿qué vamos a controlar? Así, las posibilidades son infinitas, pero hoy vamos a crear un juego muy sencillo esquivar a probar nuestro nuevo sistema de control. Vamos a moverse sobre la configuración del juego con bastante rapidez, por lo que si usted es totalmente nuevo para el motor de la unidad Usted puede encontrar nuestra Unidad Juego de Programación Guía para principiantes útil para orientarse.Programación de un juego con la Unidad: una guía para principiantesProgramación de un juego con la Unidad: una guía para principiantesEn el paisaje evolutivo de desarrollo de juegos indie, la Unidad se ha convertido en algo así como un estándar de facto: su bajo costo, facilidad de uso y amplio conjunto de características lo hacen ideal para el desarrollo de juegos rápida.Lee mas

Vamos a construir un juego muy básico en el que su objetivo es esquivar su ámbito a la izquierda y derecha para evitar la caída de cubos, que utilizará el controlador personalizado recién hecho.

Crear una nueva escena y arrastre el prefabricada de Uniduino Bienes gt; Uniduino gt; prefabs en su jerarquía y arrastre el prefabricada Uniduino en la jerarquía. Lo necesitamos allí para hacer la conversación entre nuestro juego y el controlador.

En la Unidad jerarquía clic Crear gt; Esfera y utilizar la pestaña Transformar en el Inspector para moverlo a la parte inferior de la pantalla del juego.

Inspector Esfera X Posición

Es hora de ponerse Codificación

Ahora añadir algo de código para este partido. Con la esfera seleccionada en la jerarquía, haga clic Añadir Componente gt; nuevo guión en la parte inferior de la ventana de inspección es. Nombralo sphereMover y seleccione Do sostenido Del menú desplegable. Hacer clic Crear y añadir y el guión se añadirá a la GameObject. Haga doble clic en él para abrir la secuencia de comandos y escriba este código:

utilizando UnityEngine-utilizando Sistema.Colecciones-utilizando Uniduino-público clase sphereMover : MonoBehaviour{// encabezados no son scrictly NECESARIO, sino que hacen más fácil la vida de nuevo en el Inspector.[Encabezamiento("Variables Arduino")]// tenemos que declarar el Arduino como una variablepúblico Arduino Arduino-// tenemos que declarar un entero para el número de identificación personal de nuestra potenciómetro,// hacer estas variables medios públicos podemos cambiarlos en el editor más tarde// si cambiamos el diseño de nuestra Arduinopúblico int potPinNumber-// una variable flotador para mantener el valor del potenciómetro (0 - 1023)público flotador potValue-// vamos a volver a asignar más tarde que potValue a la posición y nuestra cápsula y mantenerla en esta variablepúblico flotador mappedPot-// int pública para nuestro pin botónpúblico int buttonPinNumber-[Encabezamiento("Las variables de esfera")]// variables que tienen los valores que se indicó anteriormente para los lados de la pantalla de nuestropúblico flotador borde izquierdo-público flotador borde derecho-// utilizar esto para la inicializaciónvacío comienzo (){// e inicializar podremos, a partir de la variable de Arduino. // sólo estamos usando un Arduino, así que podemos usar Arduino.global para agarrarlo.Arduino = Arduino.global-Arduino.Preparar(ConfigurePins)-}vacío ConfigurePins(){// configurar el pin de Arduino que ser análogo a nuestro potenciómetroArduino.pinMode(potPinNumber, pinMode.COSA ANÁLOGA)-// Indicar el Arduino reportar cualquier cambio en el valor de nuestra potenciómetroArduino.reportAnalog(5, 1)-// configurar nuestra pin botónArduino.pinMode(buttonPinNumber, pinMode.ENTRADA)-Arduino.reportDigital((byte)(buttonPinNumber / 8), 1)-}}

Tome un momento para leer los comentarios de código. Hasta ahora, hemos declarado algunas variables para nuestra Arduino, sus patas, y nuestra esfera. También hemos utilizado el
Comienzan y métodos ConfigurePins para inicializar nuestro Arduino en tiempo de ejecución. Vamos a salvar nuestro guión, y volver a entrar en el editor de la Unidad y ver lo que ha cambiado.

Esfera de secuencias de comandos Mover con variables vacías

Ahora podemos ver nuestras variables públicas en la ventana de inspección. Vamos a ver qué podemos entrar en esta etapa para ayudarnos más adelante. Sabemos lo de pines que estamos utilizando en el Arduino de nuestra compilación anterior, podemos entrar en ellos. También sabemos por nuestro experimento anterior hasta dónde queremos nuestra esfera de poder viajar izquierda y derecha para que no se salga de la pantalla. Vamos a entrar en estos valores ahora.

Esfera de secuencias de comandos Mover con variables

Primeros signos de vida

Es el momento de ver realmente los valores de nuestra Arduino dentro del editor de Unity. Por ahora, podemos añadir una línea de código a la función de actualización de nuestro script sphereMover, y guardar el script de nuevo.

vacío Actualizar (){// Asignamos el valor del Arduino es la lectura de nuestra potentionmeter a nuestra variable potValuepotValue = Arduino.analogRead(potPinNumber)-} 

Ahora que tenemos nuestra variable potValue se actualiza cada cuadro, podemos ver su valor en tiempo real en el inspector de la Unidad. Antes de que le dan una prueba, ahora sería un buen momento para comprobar que el Uniduino enchufe está escuchando en el puerto correcto. Haga clic en Uniduino en la jerarquía, y comprobar que es el nombre de puerto en el Inspector. Si está en blanco, escriba el número de puerto correcto para su Arduino. En este caso se trataba de COM4, ​​aunque puede ser diferente para usted. Compruebe utilizando el IDE Arduino si no está seguro.

Compruebe Uniduino El puerto no es correcta

Seleccione el ámbito de la jerarquía y haga clic en el botón Reproducir en la parte superior de la pantalla. El sistema necesita unos segundos para inicializar, después de lo cual usted debe comenzar a ver el cambio de variable Valor Pot en el inspector cuando se mueve el potenciómetro.

Los signos de la vida 2

¡Ahora estamos hablando! Bueno, hablando estrictamente Unidad y el Arduino están hablando, pero quién lleva la cuenta? Si ha llegado hasta aquí y no ha visto el cambio de valor en el inspector, compruebe lo largo de los pasos de instalación y asegúrese de que tiene el puerto correcto seleccionado para su Arduino.

Vamos a mover esta esfera

Ahora que tenemos a cabo variables potValue ser actualizado, queremos utilizar este valor para mover nuestra esfera. Cuando el potenciómetro es todo el camino a la izquierda que queremos la esfera de estar en el lado izquierdo de la pantalla, y viceversa. Los objetos en la unidad son posicionados en un punto en el espacio vectorial, determinado por los valores de que es transform.position. En el siguiente imagen, donde la esfera está en el punto más a la izquierda que nos gustaría que, se puede ver que es el vector de posición es 9,5, -4, 0.

Transformar Ejemplo 670

Queremos influir en la posición X de la esfera. Desafortunadamente el uso de los valores de nuestra potenciómetro directamente no va a funcionar, como cuando el potenciómetro es todo el camino a la izquierda que da un valor de 0 - que pondría a nuestra esfera justo en el centro de la pantalla. En el otro extremo, el valor superior del potenciómetro, 1023, colocaría la forma de cubo a la derecha de nuestra pantalla. Inútil. Lo que necesitamos es un poco de matemática.

¿Por qué las matemáticas Cuando la Unidad lo hará por usted?

Para aquellos de ustedes por ahí temiendo mirando a un trozo de papel cubierto de números sin sentido (aunque hay algunos grandes sitios web que puede ayudarle a aprender matemáticas), no el miedo. Necesitamos una manera de hacer que nuestros valores potenciómetro para corresponder con la posición X de nuestra esfera. Afortunadamente, podemos utilizar una Método de extensión.Los 20 sitios web que usted necesita aprender matemáticas paso a pasoLos 20 sitios web que usted necesita aprender matemáticas paso a pasoHemos recopilado los mejores sitios para cada nivel de manera que se puede aprender de manera sistemática, obtener una mejor comprensión de las matemáticas en un nivel cada vez, y divertirse!Lee mas

Vídeo: Crear app en android para controlar arduino(Bluetooth)

Un método de extensión es un script que hace un trabajo específico para nosotros. En este caso, le damos los valores que tenemos, y vuelve a asignarse a uno otro, listo para ser utilizado en nuestro sphereMover guión. En la parte superior del panel Proyecto, haga clic Crear gt; C # script y el nombre de ExtensionMethods. Introduzca el código siguiente en la secuencia de comandos:

utilizando UnityEngine-utilizando Sistema.Colecciones-público estático clase ExtensionMethods {// nuestra práctica función de Remapper Dandypúblico estático flotador Remapear (esta flotador valor, flotador de 1, flotador to1, flotador from2, flotador a 2){regreso (valor - de 1) / (to1 - de 1) * (a 2 - from2) + from2-}}

Guardar el guión, y regresar a su script sphereMover. Ahora podemos utilizar esta función Reasignar en nuestro script ExtensionMethods en nuestra función de actualización para convertir nuestros valores del potenciómetro en valores utilizables en nuestro juego. Bajo en el que acaba de asignar la variable potValue, escriba lo siguiente:

Función Remapear

El indicador nos muestra que nuestra toma de Reasignación de dos conjuntos de valores Desde y Hasta, y los asigna juntos. Podemos entrar en nuestros valores en esto.

mappedPot = potValue.Remapear(0, 1023, borde izquierdo, borde derecho)-

Guardar la secuencia de comandos, regresar al editor de Unity, y pulsa el botón de reproducción. Ahora debería ver que los cambios de variables asignadas Pot cuando se mueve el potenciómetro, que se corresponden con los valores determinados para que nuestra bordes izquierdo y derecho. Tómese un momento para sentarse y gracias a su guión ExtensionMethods. No es una calculadora a la vista.

mapeado Pot

Nota: Si usted está notando que sus valores se invierten, por lo que cuando el potenciómetro es todo el camino a la derecha que está recibiendo un valor negativo para la variable asignada Pot, usted puede tener su potenciómetro configurado de manera incorrecta. Por suerte, se puede solucionar este problema sin hacer ningún cableado. Puede simplemente cambiar los valores cuando se les reasigna:

interruptor de Reasignación

Ahora por fin tenemos valores utilizables. Ahora todo lo que queda por hacer es asignar esos valores a la posición X de nuestra esfera:

// asigna el valor olla asignada a la posición x de la esferatransformar.posición = nuevo vector3(mappedPot, transformar.posición.y, transformar.posición.z)-

Guardar la secuencia de comandos, regresar al editor de la Unidad y juego de la prensa. Ahora debería ser capaz de mover su esfera a la izquierda y derecha utilizando el potenciómetro!

Poner el botón para trabajar

Ahora que tenemos nuestro movimiento esfera, ¿no sería bueno tener una manera de retrasar un poco las cosas cuando estemos en una situación difícil? Vamos a utilizar nuestro botón para ralentizar el tiempo en nuestro juego. Abra la secuencia de comandos sphereMover, y añadir este código a su función de actualización

// si la unidad detecta el botón está presionado, la escala de tiempo se ralentizaSi (Arduino.digitalRead(buttonPinNumber) == 1){Hora.timeScale = 0,4F-}más Hora.timeScale = 1.0f-

Ahora tenemos la mecánica de nuestro juego, vamos a añadir algunos obstáculos! Vamos a utilizar el enemigo natural de la esfera, el cubo. En la jerarquía, haga clic Crear gt; objeto 3d gt; Cubo. En el inspector del cubo, Añadir Componente gt; Física gt; Cuerpo rígido. Establecer el valor de la fricción del cuerpo rígido a 5. Además, en el marco del componente del compartimento Colisionador en el inspector, seleccione Es Trigger. Esto nos permitirá detectar colisiones con nuestra esfera.

Crear una secuencia de comandos en el cubo y lo llaman collideWithSphere, abrir la secuencia de comandos y eliminar las funciones de inicio y actualización, ya no vamos a ellos que necesitan este tiempo. Introduce este código:

utilizando UnityEngine-utilizando Sistema.Colecciones-público clase collideWithSphere : MonoBehaviour{vacío OnTriggerEnter(colisionador de otra){Destruir(otro.GameObject)-}}

OnTriggerEnter envía un mensaje cada vez que el colisionador de disparo golpea a otro colisionador. En este caso, estamos diciendo que destruir todo lo que toca. Guardar el guión y regresar al editor de Unity. Arrastrar el cubo de la jerarquía al panel Proyecto. Se dará cuenta el texto del cubo en la jerarquía se ha puesto azul. Esto se debe a que hemos creado una casa prefabricada y guardado en nuestro proyecto. Eliminar el cubo de la jerarquía ahora.

Vídeo: Arduino MEGA, Proyecto Armado. Secuencia de Luces LED y Juego.

Todo lo que necesitamos ahora es un script para generar los cubos. En el clic jerarquía Crear gt; crear vacía, y cambie su nombre a Juego Gestor en el Inspector y agregar una secuencia de comandos para que llamó gameManager. Abra el guión y añadir este código:

utilizando UnityEngine-utilizando Sistema.Colecciones-público clase gameManager : MonoBehaviour {// una variable para contener el prefabricada que queremos para desovarpúblico cubo GameObject-// queremos algunas variables para decidir cómo los cubos para desovar // y qué tan alto por encima de nosotros queremos que desovanpúblico int numberToSpwan-público flotador lowestSpawnheight-público flotador highestSpawnheight-// utilizar esto para la inicializaciónvacío comienzo (){para (int yo = 0- yo lt; numberToSpwan- yo++){instanciar(cubo, nuevo vector3(Aleatorio.Distancia(-9, 9), Aleatorio.Distancia(lowestSpawnheight, highestSpawnheight), 0), Cuaternio.identidad)-}}// actualización se llama una vez por cuadrovacío Actualizar (){}}

Guardar el guión. De vuelta en el editor, seleccione el Juego de Director de la jerarquía, y arrastrar el prefabricada cubo desde el panel de proyecto para la variable Cubo en el Inspector. Rellene los valores para su desove aquí también. Puede jugar con él para que sea tan fácil o difícil como quieras. Tenga en cuenta que vale la pena tener sus cubos más bajas desovan lo suficientemente alto como para permitir Uniduino para inicializar - perder el juego antes de que son capaces de moverse puede ser frustrante!

juego de Director

El proyecto terminado

Ahora, cuando se presiona el juego, los cubos se generan por encima de usted y el otoño. Puede utilizar su potenciómetro para evitarlos, y el botón para ralentizar el tiempo.

En este proyecto se ha creado un controlador personalizado con un Arduino, configurado Unidad y Uniduino comunicarse con él, y ha creado un juego sencillo para probarlo. Los conceptos aquí se pueden aplicar a casi cualquier proyecto, e incluso hay atascos de juego que se especializan en los controladores personalizados.

Con Arduino y la unidad se podría crear un controlador personalizado a partir de casi cualquier cosa. ¿Ha creado un equipo de alta fidelidad que controla una nave espacial? Una tostadora que controla un juego de plataformas?

Si ha realizado un proyecto como este me encantaría verlo! Puesto que en los comentarios!

Artículos Relacionados