using Cysharp.Threading.Tasks; using DG.Tweening; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UIElements; public class Enteringreservoirarea : MonoBehaviour { /// /// 物体位移到指定位置 /// public Transform transportbox; /// /// 位移箱子速度 /// public float speed = 5f; /// /// 提升机 /// public GameObject Uptrans; /// /// 第一个码垛机 /// public GameObject Palletizingarm1; /// /// 第二个码垛机 /// public GameObject Palletizingarm2; /// /// 需要位移的点位 /// public Transform point; /// /// 记住提升机初始位置 /// public Transform pos; /// /// 箱子的位置 /// public Transform boxpos; /// /// 箱子第二步位移 /// public Transform box2; /// /// 码垛机位置一 /// public Transform tongs1; /// /// 码垛机位移二 /// public Transform tongs2; /// /// 箱子位移第四步 /// public Transform box3; /// /// 箱子位移第五步 /// public Transform box4; /// /// 箱子位移第五步 /// public Transform box5; /// /// 箱子位移第六步 /// public Transform box6; /// /// 第二个码垛机抓手点位 /// public Transform tongs3; /// /// 第二个码垛机抓手点位 /// public Transform tongs4; /// /// 箱子位移第7个点位 /// public Transform box7; /// /// 第八个点位 /// public Transform box8; void Start() { } void Update() { } /// /// 箱子触发 /// /// private async void OnTriggerEnter(Collider other) { //if (other.gameObject.CompareTag("Box")) //{ // await Makeprogress(other.gameObject, Uptrans); //} } /// /// /// /// /// /// private async UniTask Makeprogress(GameObject box, GameObject hoister) { await MoveObjectToPosition(hoister.transform, point.transform.position, speed); await Moveup(box.gameObject, hoister); } private async UniTask Moveup(GameObject point, GameObject upmachine) { await MoveObjectToPosition(point.transform, transportbox.position, speed); point.transform.SetParent(null); point.transform.SetParent(upmachine.transform); await MoveObjectToPosition(upmachine.transform, pos.transform.position, speed); point.transform.SetParent(null); await MoveObjectToPosition(point.transform, boxpos.transform.position, speed); await MoveObjectToPosition(point.transform, box2.transform.position, speed); GameObject boxchild = point.transform.GetChild(0).gameObject; boxchild.transform.SetParent(null); await MoveObjectToPosition(point.transform, box3.transform.position, speed); boxchild.transform.SetParent(Palletizingarm1.transform); await MoveObjectToPosition(Palletizingarm1.transform, tongs2.transform.position, speed); boxchild.transform.SetParent(null); await MoveObjectToPosition(point.transform, box4.transform.position, speed); await MoveObjectToPosition(Palletizingarm1.transform, tongs1.transform.position, speed); await MoveObjectToPosition(boxchild.transform, box3.transform.position, speed); await MoveObjectToPosition(point.transform, box5.transform.position, speed); await MoveObjectToPosition(boxchild.transform, box4.transform.position, speed); await MoveObjectToPosition(point.transform, box6.transform.position, speed); await MoveObjectToPosition(boxchild.transform, box5.transform.position, speed); await MoveObjectToPosition(Palletizingarm2.transform, tongs3.transform.position, speed); point.transform.SetParent(Palletizingarm2.transform); await MoveObjectToPosition(Palletizingarm2.transform, tongs4.transform.position, speed); await MoveObjectToPosition(boxchild.transform, box6.transform.position, speed); point.transform.SetParent(null); boxchild.transform.SetParent(point.transform); BoxCollider collider = point.GetComponent(); collider.center = new Vector3(0, 0, 0); await MoveObjectToPosition(Palletizingarm2.transform, tongs3.transform.position, speed); await MoveObjectToPosition(point.transform, box8.transform.position, speed); BoxCollider checkposition = box8.GetComponent(); if (checkposition) { checkposition.enabled = true; } } /// /// 箱子做对应的动画 /// /// /// /// /// private async UniTask MoveObjectToPosition(Transform target, Vector3 destination, float speed) { float duration = Vector3.Distance(target.position, destination) / speed; await target.DOMove(destination, duration).SetEase(Ease.InOutQuad).AsyncWaitForCompletion(); } }