O mundo da tecnologia é motivado e “limitado” pela imaginação de cada um. Desta feita o artigo desta edição prende-se com a ligação de um micro-controlador Arduino ao conhecido Game Engine Unity.
O objetivo deste artigo é explicar como proceder à ligação de um micro-controlador Arduino ao Unity e usar este como uma espécie de “comando” para o jogo criado no Unity. Será um exemplo extremamente simples que resultará no controlo de um simples sprite no eixo do X sem qualquer animação especial.
Para este pequeno tutorial necessitamos dos seguintes elementos:
- Arduino Uno
- 2 x Push Buttons
- Cabos de Conexão
- Arduino IDE
- Unity
Uma vez cumpridos os requisitos vamos dar inicio à assemblagem do pequeno circuito eletrónico que será o nosso “comando” de controlo do personagem do exemplo em Unity.
Depois de implementado o seguinte esquema eletrónico iremos passar à programação do micro-controlador Arduino.
Aqui fica o código necessário:
//Definição dos pin's responsáveis pelos respectivos Push Buttons const int botaoEsquerdo = 3; const int botaoDireito = 4; void setup() { Serial.begin(9600); pinMode(botaoEsquerdo, INPUT); digitalWrite(botaoEsquerdo, HIGH); pinMode(botaoDireito, INPUT); digitalWrite(botaoDireito, HIGH); } //Método de Leitura Constante do Estado dos Push Butons void loop() { if(digitalRead(botaoEsquerdo) == LOW) { Serial.write(1); Serial.flush(); delay(20); } if(digitalRead(botaoDireito) == LOW) { Serial.write(2); Serial.flush(); delay(20); } }
Feito o upload do código acima mostrado para o Arduino vamos passar ao Unity.
Para isso necessitamos de criar um novo projeto, assim como uma nova “scene” onde poderemos colocar um background ao nosso gosto e um “personagem” que será controlado pelo “comando” acionado pelo Arduino.
No exemplo mostrado usei ainda um elemento para o solo ao qual adicionei um “BoxCollider” assim como o personagem tem também adicionado um “BoxCollider” para que não caia no infinito. Mas estes pormenores podem ser personalizados ao gosto de cada um.
A imagem acima mostra o exemplo que criei para ilustrar este tutorial.
Após a criação do cenário propriamente dito temos de então de criar um script em C# que será o coração do movimento e ligação com o Arduino.
Aqui está o código que deverá ser incluído no script C# para que possamos então conectar o nosso “comando” Arduino ao Personagem implementado no Unity.
using UnityEngine; using System.Collections; using System.IO.Ports; public class Arduino : MonoBehaviour { //Definiçao da variavel velocidade public float velocidade; //Definiçao da Porta COM que sera utilizada SerialPort porta = new SerialPort("COM3", 9600); // Use this for initialization void Start () { //Abertura da Porta COM para conexao com o Arduino porta.Open (); porta.ReadTimeout = 1; } // Update is called once per frame void Update () { //Caso a porta COM responda positivamente estao executaremos o metodo Mover() if(porta.IsOpen) { try { Mover (porta.ReadByte()); } catch(System.Exception) { } } } //Metodo Mover que sera chamado a cada clique no Push Button void Mover(int direcao) { //Para a Direita if (direcao == 1) { transform.Translate(-Vector2.right * velocidade * Time.deltaTime, Space.World); } //Para a Esquerda if (direcao == 2) { transform.Translate(Vector2.right * velocidade * Time.deltaTime, Space.World); } } }
Após criar o script C# apenas é necessário arrastá-lo para para o “Inspector” referente ao personagem e se tudo correu bem ao colocar a cena em execução o Arduino será capaz de enviar para o Unity as nossas ações e reproduzi-las em tempo real.
Este tutorial é apenas um pequeno exemplo de como controlar um personagem usando o Arduino, no entanto pode ser aprofundado e explorado ao gosto de cada um, sendo possível implementar uma ação “saltar”, “disparar”, basicamente tudo o que a nossa imaginação disser.