Ejemplo n.º 1
0
    public void OnConfirm()
    {
        var toggle = ModeGroup.GetActive();

        if (toggle.name == "Mode1")
        {
            command.mode = 0;
        }
        else if (toggle.name == "Mode2")
        {
            command.mode = 1;
        }
        if (timeField.text.Length != 0)
        {
            command.time = int.Parse(timeField.text);
        }
        if (energyField.text.Length != 0)
        {
            command.energy = int.Parse(energyField.text);
        }
        if (coordField.text != "Wrong string" && coordField.text.Length != 0)
        {
            command.command = RobotCommands.TelegaMoving(coordField.text);
            ModeGroup.SetActive(0);
            coordField.text = "";
            this.gameObject.SetActive(false);
        }
    }
Ejemplo n.º 2
0
    public IEnumerator DirectionalMoving()
    {
        rc.aims.Insert(0, telega.PointA.transform.position);
        rc.aims.Insert(0, telega.PointA.transform.position + telega.A - telega.B);

        for (int i = 0; i < rc.aims.Count; ++i)
        {
            rc.aims[i] = new Vector3(rc.aims[i].x, telega.transform.position.y, rc.aims[i].z);
        }

        for (int j = 1; j < rc.aims.Count - 1; ++j)
        {
            a = rc.aims[j] - rc.aims[j - 1];
            b = rc.aims[j + 1] - rc.aims[j];

            angle = new float[3] {
                30f, -30f, 90f
            };
            float alpha = Mathf.Acos(Vector3.Dot(a.normalized, b.normalized)) * Mathf.Rad2Deg;
            dist = new float[3] {
                Mathf.Abs(Mathf.PI * 20f * alpha / 180f), Mathf.Abs(Mathf.PI * 20f * alpha / 180f), Mathf.Abs(Mathf.PI * 20f * alpha / 180f)
            };

            if (Vector3.Cross(a, b).y >= 0)
            {
                isReversed = new float[3] {
                    -1, -1, 1
                };
            }
            if (Vector3.Cross(a, b).y < 0)
            {
                isReversed = new float[3] {
                    1, 1, -1
                };
            }

            //SceneManager.Net.Sender(RobotCommands.TelegaMoving());
            var aimsRobot = CoordTransformation.UnityToRobotPosOnly(new Vector4(rc.aims[j].x, rc.aims[j].y, rc.aims[j].z, 1));
            SceneManager.Net.Sender(RobotCommands.TelegaMoving(aimsRobot[0].ToString("0.00"), aimsRobot[1].ToString("0.00")));
            yield return(new WaitForSeconds(0.5f));

            GameObject.Find("telega").GetComponent <telegaScript>().isMoved = true;



            float dst = Mathf.Sqrt((rc.aims[j + 1].x - rc.aims[j].x) * (rc.aims[j + 1].x - rc.aims[j].x) +
                                   (rc.aims[j + 1].z - rc.aims[j].z) * (rc.aims[j + 1].z - rc.aims[j].z)) * 1000f;
            dist = new float[3] {
                dst, dst, dst
            };
            isReversed[0] = isReversed[1] = isReversed[2] = 1;
            angle[0]      = angle[1] = angle[2] = 0;
            yield return(new WaitForSeconds(0.5f));

            GameObject.Find("telega").GetComponent <telegaScript>().isMoved = true;
        }
        rc.aims.RemoveAt(0);
        rc.aims.RemoveAt(0);
    }