Paso 5: Parte de la unidad 2 permite leer y mover la bolsa
puede seguir el video tutorial paso a paso explicación o simplemente sujetar el siguiente script a tu botella y divertirse :)
using UnityEngine;using System.Collections; using System.IO.Ports;
public class Punch : MonoBehaviour {
public int x , y ; public int power; public float angle; public AudioSource player;
private Vector3 punchDir; private Rigidbody punchingBag; private SerialPort stream = new SerialPort( + "COM11", 9600);
// Use this for initialization void Start () {
corriente. Open(); corriente. ReadTimeout = 25; StartCoroutine(readData()); punchingBag = GetComponent(); stream.Open(); stream.ReadTimeout=25; StartCoroutine(readData()); punchingBag = GetComponent(); } // Update is called once per frame void Update () { punchDir = new Vector3(x, 0, y); angle = Vector2.Angle(Vector2.up, punchDir); if (angle < 0) { Debug.Log("negative Value"); } } Actualización se llama una vez por marco vacío actualización () {punchDir = new Vector3 (x 0, y); ángulo = Vector2.Angle (Vector2.up, punchDir); if (ángulo < 0) {vez ("valor negativo"); public void punchIt(int _x ,int _y) { punchDir = new Vector3(_x, 0f, _y); punchingBag.AddForce(power * punchDir); player.Play(); }
público vacío punchIt (int _x, int _y) {punchDir = new Vector3 (_x, 0f, _y); punchingBag.AddForce(power * punchDir); jugador. Play(); IEnumerator readData() {
while (true) { if (stream.IsOpen) {
try {
string value = stream.ReadLine(); string[] values = value.Split(','); int x1 = int.Parse(values[0]); int y1 = int.Parse(values[1]); Debug.Log(x1); if (x1 >= 62 && x1 <= 185) { x1 = 0;
} else if (x1 > 185) { x1 = -1; } else if (x1 < 62) { x1 = 1; }
if (y1 >= 62 && y1 <= 185) { y1 = 0; else if (x1 > 185) {x1 = - 1; } else if (y1 > 185) { y1 = -1; } else if (y1 < 62) { y1 = 1; } Debug.Log(x1); //Debug.Log(y1); punchIt(x1, y1); } catch (System.Exception) { // Debug.Log("TimeOut Exception"); } else if (x1 < 62) {x1 = 1; } yield return null;
}
} } else if (y1 > 185) {y1 = -1;else if (y1 < 62) {y1 = 1;Debug.Log(x1); Debug.Log(y1); punchIt (x1, y1);catch (System.Exception) {/ / vez ("tiempo de espera de excepción");