Göra en slagsäck i Arduino och enighet med hjälp av Joystic och ballong (5 / 5 steg)
Steg 5: Enighet del 2 kan läsa och flytta påsen
Du kan följa den video handledningen steg för steg förklaring eller helt enkelt bifoga följande skript till din cylinder och ha kul :)
använder UnityEngine;
använder System.Collections;
använder System.IO.Ports;
allmän klass Punch: MonoBehaviour {
Public int x, y;
Public int makt;
offentliga flyta metar;
offentliga AudioSource spelaren;
privat Vector3 punchDir;
privat Rigidbody punchingBag;
privat SerialPort ström = nya SerialPort (+ "COM11", 9600);
Använd detta vid initiering
Ogiltig Start () {
Stream. Open();
Stream. ReadTimeout = 25;
StartCoroutine(readData());
punchingBag = GetComponent();
}
Uppdatering anropas en gång per bildruta
void uppdatering () {
punchDir = ny Vector3 (x, 0, y);
vinkel = Vector2.Angle (Vector2.up, punchDir);
om (vinkel < 0) {
Debug.Log ("negativt värde");
}
}
public void punchIt (int _x, int _y) {
punchDir = ny Vector3 (_x, 0f, _y);
punchingBag.AddForce(power * punchDir);
spelaren. Play ();
}
IEnumerator readData() {
medan (sant) {
om (stream. IsOpen)
{
försök
{
strängvärde = stream. ReadLine();
strängvärden [] = värde. Split(',');
int x1 = int. Parse(VALUES[0]);
int y1 = int. Parse(VALUES[1]);
Debug.Log(x1);
om (x1 > = 62 & & x1 < = 185)
{
x1 = 0;
}
annars om (x1 > 185)
{
x1 = - 1;
}
annars om (x1 < 62)
{
x1 = 1;
}
om (y1 > = 62 & & y1 < = 185)
{
Y1 = 0;
}
annars om (y1 > 185)
{
Y1 = -1;
}
annars om (y1 < 62)
{
Y1 = 1;
}
Debug.Log(x1);
Debug.Log(y1);
punchIt (x1, y1);
}
fånga (System.Exception)
{
Debug.Log ("TimeOut undantaget");
}
}
avkastningen returnera null;
}
}
}