U3D_TobaccoWarehouseISMDTSy.../Assets/Scripts/YL/Enteringreservoirarea.cs

174 lines
5.5 KiB
C#

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
{
/// <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;
/// <summary>
/// 第八个点位
/// </summary>
public Transform box8;
void Start()
{
}
void Update()
{
}
/// <summary>
/// 箱子触发
/// </summary>
/// <param name="other"></param>
private async void OnTriggerEnter(Collider other)
{
//if (other.gameObject.CompareTag("Box"))
//{
// await Makeprogress(other.gameObject, Uptrans);
//}
}
/// <summary>
///
/// </summary>
/// <param name="box"></param>
/// <param name="hoister"></param>
/// <returns></returns>
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<BoxCollider>();
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<BoxCollider>();
if (checkposition)
{
checkposition.enabled = true;
}
}
/// <summary>
/// 箱子做对应的动画
/// </summary>
/// <param name="target"></param>
/// <param name="destination"></param>
/// <param name="speed"></param>
/// <returns></returns>
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();
}
}