using DefaultNamespace; using DG.Tweening; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using static InterfaceManager; public class Palletizertent : MonoBehaviour { /// /// 设备id /// public string ID; /// /// 速度 /// public float Speed = 3.5f; [Header("码垛机手臂")] public GameObject Armobj; [Header("需要判断位置的箱子")] public Transform Haveabox; /// /// 初始化判断 /// private bool ispcon = false; /// /// 普通实箱 /// public Material Commonfruitbox; /// /// 普通空箱 /// public Material Normalairbox; /// /// 特殊实箱 /// public Material Specialkernelbox; /// /// 特殊空箱 /// public Material Specialbox; /// /// 一个箱子 /// public GameObject Boxgame; /// /// 展示对应的位置 /// public Transform Points; public void Stacking(Dpmequipment cmequipment) { if (cmequipment.TaskNumber.Length > 0) { if (cmequipment.TaskNumber.Length > 0 && !ispcon && cmequipment.boxesNumber == "1") { Init(cmequipment); ispcon = true; } ispcon = true; if (cmequipment.boxesNumber == "1" && cmequipment.UpperInPlace == "True") { Suitcase(cmequipment.TaskNumber); } else if (cmequipment.boxesNumber == "0" && cmequipment.DownInPlace == "True") { Stow(); } else if (cmequipment.boxesNumber == "0" && cmequipment.MiddleInPlace == "True") { Centreposition(); } else { Debug.Log("没有条件"); } } } private void Init(Dpmequipment dpmequipment) { string url = Tasknumber + dpmequipment.TaskNumber; StartCoroutine(Getstring(url, (data) => { Initdata initdata = JsonUtility.FromJson(data); if (initdata != null && Boxgame) { Debug.Log("码垛机初始化" + data); GameObject box = Instantiate(Boxgame, Points.transform); Debug.Log("生成对应位置"); Boxtasknumber boxtasknumber = box.GetComponent(); boxtasknumber.ID = initdata.result[0].transferId; switch (initdata.result[0].palletType) { case "QBox": if (initdata.result[0].itemType == "EmptyBox") { Renderer renderer = box.GetComponent(); //Renderer renderer1 = box.transform.GetChild(0).GetComponent(); if (renderer != null) { renderer.material = Normalairbox; } //if (renderer1 != null) //{ // renderer1.material = Normalairbox; //} } else { Renderer renderer2 = box.GetComponent(); // Renderer renderer3 = box.transform.GetChild(0).GetComponent(); if (renderer2 != null) { renderer2.material = Commonfruitbox; } //if (renderer3 != null) //{ // renderer3.material = Commonfruitbox; //} } break; case "Box": if (initdata.result[0].itemType == "EmptyBox") { Renderer renderer = box.GetComponent(); //Renderer renderer1 = box.transform.GetChild(0).GetComponent(); if (renderer != null) { renderer.material = Specialbox; } //if (renderer1 != null) //{ // renderer1.material = Specialbox; //} } else { Renderer renderer2 = box.GetComponent(); //Renderer renderer3 = box.transform.GetChild(0).GetComponent(); if (renderer2 != null) { renderer2.material = Specialkernelbox; } //if (renderer3 != null) //{ // renderer3.material = Specialkernelbox; //} } break; default: break; } if (dpmequipment.boxesNumber == "1") { Armobj.transform.DOMoveY(Armobj.transform.position.y + 0.2f, 0.2f).SetEase(Ease.InOutQuad).OnComplete(() => { Debug.Log("初始化码垛机手臂的位置"); box.gameObject.transform.SetParent(Armobj.transform); MqttManager.Instance.firstbox.Add(box); }); } if (dpmequipment.boxesNumber == "0" && dpmequipment.DownInPlace == "True") { Stow(); } else if (dpmequipment.boxesNumber == "0" && dpmequipment.MiddleInPlace == "True") { Centreposition(); } else { Debug.Log("没有条件"); } } })); } /// /// 中到位操作 /// private void Centreposition() { Debug.Log("中到位是否满足条件"); if (Armobj.transform.childCount > 0 && Haveabox.childCount > 0) { Debug.Log("执行中到位"); GameObject box = Armobj.transform.GetChild(0).gameObject; GameObject box2 = Haveabox.transform.GetChild(0).gameObject; if (box2 != null) { if (box2.GetComponent() != null) { Destroy(box2.GetComponent()); } if (box2.GetComponent() != null) { Destroy(box2.GetComponent()); } } if (box != null && box2) { box.transform.SetParent(null); box2.transform.SetParent(null); Vector3 transform = box2.transform.position; box2.transform.position = box.transform.position; box.transform.position = transform; box2.transform.SetParent(box.transform); if (box.GetComponent() != null) { BoxCollider box3 = box.GetComponent(); box3.center = new Vector3(0, 0, 0); //Debug.Log("把碰撞体给到箱子中心"); box.transform.SetParent(Haveabox.transform); Armobj.transform.DOMoveY(Armobj.transform.position.y - 0.23f, 0.2f).SetEase(Ease.InOutQuad); Debug.Log("执行中到位完成"); } } } } /// /// 提箱操作 /// /// public void Suitcase(string task) { if (Haveabox.transform.GetChild(0).childCount > 0 && Armobj.transform.childCount == 0) { GameObject box = Haveabox.GetChild(0).GetChild(0).gameObject; if (box != null) { box.transform.SetParent(null); Armobj.transform.DOMoveY(Armobj.transform.position.y + 0.2f, 0.2f).SetEase(Ease.InOutQuad).OnComplete(() => { box.transform.SetParent(Armobj.transform); if (box.transform.GetComponent() == null) { box.AddComponent(); box.AddComponent(); box.GetComponent().ID = task; } }); } } else if (Haveabox.childCount == 1) { GameObject box = Haveabox.transform.GetChild(0).gameObject; if (box != null) { Armobj.transform.DOMoveY(Armobj.transform.position.y - 1.03f, 0.5f).SetEase(Ease.InOutQuad).OnComplete(() => { box.transform.SetParent(Armobj.transform); Armobj.transform.DOMoveY(Armobj.transform.position.y + 1.23f, 0.6f).SetEase(Ease.InOutQuad); }); } } else { Debug.Log("提箱子啥也不是"); } } /// /// 放下箱子操作 /// public void Stow() { if (Armobj.transform.childCount > 0 && Haveabox.childCount == 0) { Armobj.transform.DOMoveY(Armobj.transform.position.y - 1.23f, 0.5f).SetEase(Ease.InOutQuad).OnComplete(() => { if (Armobj.transform.childCount > 0) { GameObject box = Armobj.transform.GetChild(0).gameObject; box.transform.SetParent(Haveabox); Armobj.transform.DOMoveY(Armobj.transform.position.y + 1.03f, 0.4f).SetEase(Ease.InOutQuad); } }); } else { Debug.Log("放箱子啥也不是"); } } }