using Cysharp.Threading.Tasks; using DefaultNamespace; using DG.Tweening; using System; using System.Collections; using System.Collections.Generic; using System.Drawing; using System.Runtime.Remoting.Messaging; using UnityEngine; public class Machine : MonoBehaviour { [Header("机械手臂ID")] public string Id; [Header("机械手臂动画")] public Animation animations; [Header("机械手臂箱子生成位置")] public Transform points; [Header("箱子")] public GameObject Box; [Header("箱子2")] public GameObject Box2; [Header("位移的速度")] public float speed = 3.5f; /// /// 接收执行的动画 /// private GameObject boxdata; private int Number = 0; private int Number2 = 0; /// /// 初始化判断 /// private bool ispcon = false; /// /// 特殊实箱 /// public Material Specialkernelbox; private void Awake() { } void Update() { } public void Getarm(Roboticarm roboticarm) { if (roboticarm.Jobcontent != "0" && roboticarm.Workstation != "0") { int worksta = int.Parse(roboticarm.Workstation); int index = int.Parse(roboticarm.Jobcontent); if (index != Number && worksta != Number2) { //Debug.Log("进来了调用步骤" + index); Motionexecution(roboticarm.Jobcontent, roboticarm); Number2 = worksta; } } if (!ispcon) { int index = int.Parse(roboticarm.Jobcontent); if (index > 1) { Init(); //Debug.Log("机械手臂初始化" + roboticarm.Jobcontent); } ispcon = true; } } private void Init() { if (points.childCount == 0) { GameObject box = Instantiate(Box, points); Renderer renderer = box.GetComponent(); if (renderer) { renderer.material = Specialkernelbox; } box.transform.SetParent(points); } } /// /// 先判断步骤运动到指定位置再执行动画 /// /// /// public async UniTask Motionexecution(string procedurem, Roboticarm roboticarm) { switch (procedurem) { case "1": if (roboticarm.Workstation.Length > 0) { if (MqttManager.Instance.Mechanicalarm(roboticarm.Workstation)) { Number = 1; //Debug.Log("取箱子"); Transform point = MqttManager.Instance.Mechanicalarm(roboticarm.Workstation); transform.DOMove(point.position, (Vector3.Distance(transform.position, point.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() => { animations.Play("take"); StartCoroutine(Judgmentbox(roboticarm.Workstation)); }); } } break; case "2": if (roboticarm.Workstation == "10" || roboticarm.Workstation == "9") { //Debug.Log("读箱子信息"); if (MqttManager.Instance.Mechanicalarm(roboticarm.Workstation)) { Transform box = MqttManager.Instance.Mechanicalarm(roboticarm.Workstation); transform.DOMove(box.position, (Vector3.Distance(transform.position, box.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() => { animations.Play("read"); Number = 2; Number2 = 666; }); } } else { Number = 3; Number2 = 991; } break; case "3": if (roboticarm.Workstation == "10" || roboticarm.Workstation == "9") { //Debug.Log("去盖"); if (MqttManager.Instance.Mechanicalarm(roboticarm.Workstation)) { Transform box = MqttManager.Instance.Mechanicalarm(roboticarm.Workstation); transform.DOMove(box.position, (Vector3.Distance(transform.position, box.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() => { animations.Play("To"); Number = 3; }); } } else { Number = 4; Number2 = 992; } break; case "4": if (roboticarm.Workstation != "10" || roboticarm.Workstation != "9") { //Debug.Log("喂料"); if (MqttManager.Instance.Mechanicalarm(roboticarm.Workstation)) { Transform box = MqttManager.Instance.Mechanicalarm(roboticarm.Workstation); transform.DOMove(box.position, (Vector3.Distance(transform.position, box.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() => { animations.Play("hello"); Number = 4; }); } } else { Number = 5; Number2 = 993; } break; case "5": if (roboticarm.Workstation == "10" || roboticarm.Workstation == "9") { //Debug.Log("清扫"); if (MqttManager.Instance.Mechanicalarm(roboticarm.Workstation)) { Transform box = MqttManager.Instance.Mechanicalarm(roboticarm.Workstation); transform.DOMove(box.position, (Vector3.Distance(transform.position, box.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() => { animations.Play("qing"); Number = 5; Number2 = 888; }); } } else { Number = 6; Number2 = 994; } break; case "6": if (roboticarm.Workstation == "10" || roboticarm.Workstation == "9") { //Debug.Log("拍照"); if (MqttManager.Instance.Mechanicalarm(roboticarm.Workstation)) { Transform box = MqttManager.Instance.Mechanicalarm(roboticarm.Workstation); transform.DOMove(box.position, (Vector3.Distance(transform.position, box.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() => { Number = 6; Number2 = 777; }); } } else { Number = 7; Number2 = 995; } break; case "7": if (roboticarm.Workstation == "10" || roboticarm.Workstation == "9") { //Debug.Log("加盖"); if (MqttManager.Instance.Mechanicalarm(roboticarm.Workstation)) { Transform box = MqttManager.Instance.Mechanicalarm(roboticarm.Workstation); transform.DOMove(box.position, (Vector3.Distance(transform.position, box.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() => { animations.Play("qinghou"); Number = 7; }); } } else { Number = 8; Number2 = 996; } break; case "8": if (roboticarm.Workstation.Length > 2) { //Debug.Log("放箱子"); if (MqttManager.Instance.Mechanicalarm(roboticarm.Workstation)) { Transform point = MqttManager.Instance.Mechanicalarm(roboticarm.Workstation); transform.DOMove(point.position, (Vector3.Distance(transform.position, point.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() => { animations.Play("put"); Invoke("Laydown", 1f); StartCoroutine(Judgmentbox2(roboticarm.Workstation)); Number = 8; }); } } else { Number = 9; Number2 = 997; } break; default: //Debug.Log("没有满足条件"); break; } } /// /// 查找箱子点位 /// /// IEnumerator Judgmentbox(string box) { yield return new WaitForSeconds(0.95f); switch (box) { case "11": Deletebox("5402"); break; case "12": Deletebox("5402"); break; case "21": Deletebox("5406"); break; case "22": Deletebox("5406"); break; case "31": Deletebox("5408"); break; case "32": Deletebox("5408"); break; case "41": Deletebox("5410"); break; case "42": Deletebox("5410"); break; case "51": Deletebox("5414"); break; case "52": Deletebox("5414"); break; case "61": Deletebox("5416"); break; case "62": Deletebox("5416"); break; case "71": Deletebox("5418"); break; case "72": Deletebox("5418"); break; default: break; } } /// /// 放下箱子 /// /// IEnumerator Judgmentbox2(string box) { yield return new WaitForSeconds(1.03f); switch (box) { case "111": Addbox("5404"); break; case "112": Addbox("5404"); break; case "121": Addbox("5410"); break; case "122": Addbox("5410"); break; case "131": Addbox("5412"); break; case "132": Addbox("5412"); break; default: break; } } /// /// 删除对应点位箱子 /// public void Deletebox(string point) { if (MqttManager.Instance.GetTransformByName(point)) { Transform points = MqttManager.Instance.GetTransformByName(point); if (points.GetChild(0).transform.childCount == 1) { GameObject box = points.transform.GetChild(0).GetChild(0).gameObject; box.transform.SetParent(null); box.transform.position = this.points.transform.position; box.transform.localEulerAngles = new Vector3(0, 0, 0); box.transform.SetParent(this.points); //Debug.Log("删除第一个对应箱子"); } else if (points.childCount == 1) { GameObject box = points.transform.GetChild(0).gameObject; box.transform.SetParent(null); box.transform.position = this.points.transform.position; box.transform.localEulerAngles = new Vector3(0, 0, 0); box.transform.SetParent(this.points); //Debug.Log("删除第二个对应箱子"); } else { //Debug.Log("找不到删除对象"); } } } /// /// 增加对应箱子 /// public void Addbox(string point) { if (MqttManager.Instance.GetTransformByName(point)) { Transform points = MqttManager.Instance.GetTransformByName(point); if (points.childCount == 0) { //Debug.Log("添加第一个箱子"); boxdata = Instantiate(Box, points.transform); } else if (points.childCount == 1) { //Debug.Log("添加第二个箱子"); GameObject box = points.GetChild(0).gameObject; if (box) { Destroy(box); } GameObject game = Instantiate(Box2, points.transform); } } } /// /// 删除手臂的箱子 /// public void Laydown() { if (points.transform.childCount > 0) { GameObject game = points.transform.GetChild(0).gameObject; Destroy(game); } } }