142 lines
6.7 KiB
C#
142 lines
6.7 KiB
C#
using Cysharp.Threading.Tasks;
|
|
using DG.Tweening;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
|
|
public class Enteringreservoirarea : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 物体位移到指定位置
|
|
/// </summary>
|
|
public Transform transportbox;
|
|
/// <summary>
|
|
/// 位移箱子速度
|
|
/// </summary>
|
|
public float speed = 5f;
|
|
/// <summary>
|
|
/// 提升机
|
|
/// </summary>
|
|
public GameObject Uptrans;
|
|
/// <summary>
|
|
/// 第一个码垛机
|
|
/// </summary>
|
|
public GameObject Palletizingarm1;
|
|
/// <summary>
|
|
/// 第二个码垛机
|
|
/// </summary>
|
|
public GameObject Palletizingarm2;
|
|
/// <summary>
|
|
/// 需要位移的点位
|
|
/// </summary>
|
|
public Transform point;
|
|
/// <summary>
|
|
/// 记住提升机初始位置
|
|
/// </summary>
|
|
public Transform pos;
|
|
/// <summary>
|
|
/// 箱子的位置
|
|
/// </summary>
|
|
public Transform boxpos;
|
|
/// <summary>
|
|
/// 箱子第二步位移
|
|
/// </summary>
|
|
public Transform box2;
|
|
/// <summary>
|
|
/// 码垛机位置一
|
|
/// </summary>
|
|
public Transform tongs1;
|
|
/// <summary>
|
|
/// 码垛机位移二
|
|
/// </summary>
|
|
public Transform tongs2;
|
|
/// <summary>
|
|
/// 箱子位移第四步
|
|
/// </summary>
|
|
public Transform box3;
|
|
/// <summary>
|
|
/// 箱子位移第五步
|
|
/// </summary>
|
|
public Transform box4;
|
|
/// <summary>
|
|
/// 箱子位移第五步
|
|
/// </summary>
|
|
public Transform box5;
|
|
/// <summary>
|
|
/// 箱子位移第六步
|
|
/// </summary>
|
|
public Transform box6;
|
|
/// <summary>
|
|
/// 第二个码垛机抓手点位
|
|
/// </summary>
|
|
public Transform tongs3;
|
|
/// <summary>
|
|
/// 第二个码垛机抓手点位
|
|
/// </summary>
|
|
public Transform tongs4;
|
|
/// <summary>
|
|
/// 箱子位移第7个点位
|
|
/// </summary>
|
|
public Transform box7;
|
|
|
|
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 hoister.transform.DOMove(point.transform.position, (Vector3.Distance(hoister.transform.position, transportbox.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
box.gameObject.transform.position = new Vector3(box.transform.position.x, box.transform.position.y + 0.8f, box.transform.position.z);
|
|
box.gameObject.transform.SetParent(null);
|
|
await Moveup(box.gameObject, hoister);
|
|
}
|
|
private async UniTask Moveup(GameObject point, GameObject upmachine)
|
|
{
|
|
await point.transform.DOMove(transportbox.transform.position, (Vector3.Distance(point.transform.position, transportbox.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
point.transform.SetParent(upmachine.transform);
|
|
await upmachine.transform.DOMove(pos.transform.position, (Vector3.Distance(upmachine.transform.position, pos.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
point.transform.SetParent(null);
|
|
await point.transform.DOMove(boxpos.transform.position, (Vector3.Distance(point.transform.position, boxpos.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await point.transform.DOMove(box2.transform.position, (Vector3.Distance(point.transform.position, box2.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
GameObject boxchild = point.transform.GetChild(0).gameObject;
|
|
boxchild.transform.SetParent(null);
|
|
Debug.Log(boxchild.name);
|
|
await point.transform.DOMove(box3.transform.position, (Vector3.Distance(point.transform.position, box3.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
boxchild.transform.SetParent(Palletizingarm1.transform);
|
|
await Palletizingarm1.gameObject.transform.DOMove(tongs2.transform.position, (Vector3.Distance(Palletizingarm1.transform.position, tongs2.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
boxchild.transform.SetParent(null);
|
|
await point.transform.DOMove(box4.transform.position, (Vector3.Distance(point.transform.position, box4.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await Palletizingarm1.gameObject.transform.DOMove(tongs1.transform.position, (Vector3.Distance(Palletizingarm1.transform.position, tongs1.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await boxchild.transform.DOMove(box3.transform.position, (Vector3.Distance(boxchild.transform.position, box3.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await point.transform.DOMove(box5.transform.position, (Vector3.Distance(point.transform.position, box5.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await boxchild.transform.DOMove(box4.transform.position, (Vector3.Distance(boxchild.transform.position, box4.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await point.transform.DOMove(box6.transform.position, (Vector3.Distance(point.transform.position, box6.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await boxchild.transform.DOMove(box5.transform.position, (Vector3.Distance(boxchild.transform.position, box5.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await Palletizingarm2.transform.DOMove(tongs3.transform.position, (Vector3.Distance(Palletizingarm2.transform.position, tongs3.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
point.transform.SetParent(Palletizingarm2.transform);
|
|
await Palletizingarm2.transform.DOMove(tongs4.transform.position, (Vector3.Distance(Palletizingarm2.transform.position, tongs4.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await boxchild.transform.DOMove(box6.transform.position, (Vector3.Distance(boxchild.transform.position, box6.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
point.transform.SetParent(null);
|
|
boxchild.transform.SetParent(point.transform);
|
|
await point.transform.DOMove(box7.transform.position, (Vector3.Distance(point.transform.position, box7.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
await Palletizingarm2.transform.DOMove(tongs3.transform.position, (Vector3.Distance(Palletizingarm2.transform.position, tongs3.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
|
|
point.transform.SetParent(box7);
|
|
}
|
|
}
|