This commit is contained in:
yulong 2024-08-29 14:44:33 +08:00
parent 9e6c6a47bf
commit 1d01fe2a72
19 changed files with 2202 additions and 420 deletions

Binary file not shown.

View File

@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: 362b1633b920f104d935369b4fe6c613
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -123,7 +123,7 @@ public class MqttManager : MonoSingleton<MqttManager>
Convoyorequipment convoyorequipment = JsonConvert.DeserializeObject<Convoyorequipment>(str.message);
string con = convoyorequipment.Id.Substring(0, 2);
Debug.Log(con);
if (con=="54")
if (con == "54")
{
convoyorequipments.Add(convoyorequipment);
}
@ -134,9 +134,9 @@ public class MqttManager : MonoSingleton<MqttManager>
break;
case "ca":
Carequipment carequipment = JsonConvert.DeserializeObject<Carequipment>(str.message);
//string carname = str.device;
//GameObject cargame = GameObject.Find(carname);
// await Carpoint(cargame,carequipment);
string carname = str.device;
GameObject cargame = GameObject.Find(carname);
Carpoint(cargame, carequipment);
break;
case "fe":
Feequipment feequipment = JsonConvert.DeserializeObject<Feequipment>(str.message);
@ -158,11 +158,17 @@ public class MqttManager : MonoSingleton<MqttManager>
}
}
}
public async UniTask Carpoint(GameObject car, Carequipment carequipment)
public void Carpoint(GameObject car, Carequipment carequipment)
{
string point = carequipment.CarState_Car_Column + "-" + carequipment.CarState_Car_Row + "-" + carequipment.CarState_Car_Layer;
Debug.Log(point);
GameObject displacement = GameObject.Find(point);
await car.transform.DOMove(displacement.transform.position, Vector3.Distance(car.transform.position, displacement.transform.position) / speed).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
Debug.Log(carequipment.id);
if (car)
{
Carinformation carbox = car.GetComponent<Carinformation>();
carbox.BoxCode = carequipment.CarState_BoxCode;
string point = carequipment.CarState_Car_Column + "-" + carequipment.CarState_Car_Row + "-" + carequipment.CarState_Car_Layer;
Debug.Log(point);
GameObject displacement = GameObject.Find(point);
car.transform.DOMove(displacement.transform.position, Vector3.Distance(car.transform.position, displacement.transform.position) / speed).SetEase(Ease.InOutQuad);
}
}
}

View File

@ -0,0 +1,23 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Carinformation : MonoBehaviour
{
public string ID;
/// <summary>
/// 获取mqtt数据对应的箱子id
/// </summary>
public string BoxCode;
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ba648a40aa90ec04ca725f6bc6394e6e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -5,4 +5,5 @@ using UnityEngine;
public class Consentmark : MonoBehaviour
{
public string ID;
}

View File

@ -21,12 +21,8 @@ public class Deliveryfromstorage : MonoBehaviour
car1 = GameObject.Find("14-37-2");
tarton = car1.GetComponent<Transform>();
//MoveTo(tarton);
//Sequence mySequence = DOTween.Sequence();
//mySequence.Append(transform.DOMove(car.transform.position, 5).SetEase(Ease.InOutQuad)).Append(transform.DOMove(car1.transform.position, 5)).SetEase(Ease.InOutQuad).Append(transform.DOMove(car.transform.position, 5).OnComplete(() =>
//{
//}));
await Planneddisplacement();
}
@ -34,29 +30,29 @@ public class Deliveryfromstorage : MonoBehaviour
{
Transform point = GameObject.Find("8-40-2").transform;
await transform.DOMove(point.transform.position, (Vector3.Distance(transform.position, point.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point.transform.position, (Vector3.Distance(transform.position, point.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point2 = GameObject.Find("8-32-2").transform;
await transform.DOMove(point2.transform.position, (Vector3.Distance(transform.position, point2.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point2.transform.position, (Vector3.Distance(transform.position, point2.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point3 = GameObject.Find("13-32-2").transform;
await transform.DOMove(point3.transform.position, (Vector3.Distance(transform.position, point3.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point3.transform.position, (Vector3.Distance(transform.position, point3.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point4 = GameObject.Find("13-7-2").transform;
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point5 = GameObject.Find("14-7-2").transform;
await transform.DOMove(point5.transform.position, (Vector3.Distance(transform.position, point5.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point5.transform.position, (Vector3.Distance(transform.position, point5.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point6 = GameObject.Find("13-1-2").transform;
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point7 = GameObject.Find("14-1-2").transform;
await transform.DOMove(point7.transform.position, (Vector3.Distance(transform.position, point7.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point7.transform.position, (Vector3.Distance(transform.position, point7.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
await UniTask.Delay(4000);
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.InQuad).AsyncWaitForCompletion();
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point8 = GameObject.Find("15-7-2").transform;
await transform.DOMove(point8.transform.position, (Vector3.Distance(transform.position, point8.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point7.transform.position, (Vector3.Distance(transform.position, point7.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point8.transform.position, (Vector3.Distance(transform.position, point8.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
await transform.DOMove(point7.transform.position, (Vector3.Distance(transform.position, point7.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
@ -67,8 +63,16 @@ public class Deliveryfromstorage : MonoBehaviour
if (other.gameObject.CompareTag("Box"))
{
Carinformation car = transform.GetComponent<Carinformation>();
Boxinformation boxinformation = other.gameObject.transform.GetComponent<Boxinformation>();
if (car && boxinformation)
{
boxinformation.ID = car.BoxCode;
Debug.Log(boxinformation.ID);
}
Debug.Log("触发了");
other.transform.SetParent(transform);
other.transform.position = new Vector3(other.transform.position.x, other.transform.position.y + 0.2f, other.transform.position.z);
//other.transform.position = new Vector3(other.transform.position.x, other.transform.position.y - 0.2f, other.transform.position.z);
if (other.gameObject != null)
{
// 获取触发器物体的碰撞体
@ -83,16 +87,18 @@ public class Deliveryfromstorage : MonoBehaviour
// 设置物体的位置
other.transform.position = triggerTop;
other.transform.SetParent(transform);
}
else
{
Debug.LogError("Trigger object does not have a Collider component.");
Debug.LogError("没有碰撞器");
}
}
else
{
Debug.LogError("Colliding object is not assigned.");
Debug.LogError("碰撞到物体了");
}
}
}
}

View File

@ -22,26 +22,12 @@ public class Displaygoods : MonoBehaviour
}
// Update is called once per frame
void Update()
{
}
private async void OnTriggerEnter(Collider other)
{
//if (other.gameObject.CompareTag("Car"))
//{
// Debug.Log("´¥·¢ÁËС³µ");
// if (box7.transform.childCount > 0)
// {
// Debug.Log("ÉÏÏò");
// GameObject box = box7.transform.GetChild(0).gameObject;
// box.transform.SetParent(null);
// await Boxmove(box);
// }
//}
}
public async void OnTriggerStay(Collider other)
{
if (other.gameObject.CompareTag("Car"))
@ -59,13 +45,25 @@ public class Displaygoods : MonoBehaviour
}
public async UniTask Boxmove(GameObject car,GameObject box)
{
await box.transform.DOMove(Box1.transform.position, (Vector3.Distance(box.transform.position, Box1.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await box.transform.DOMove(Box2.transform.position, (Vector3.Distance(box.transform.position, Box2.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await box.transform.DOMove(Box3.transform.position, (Vector3.Distance(box.transform.position, Box3.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await MoveObjectToPosition(box.transform, Box1.transform.position, speed);
await MoveObjectToPosition(box.transform, Box2.transform.position, speed);
await MoveObjectToPosition(box.transform, Box3.transform.position, speed);
box.transform.SetParent(car.transform);
Transform point = GameObject.Find("11-32-2").transform;
await car.transform.DOMove(point.transform.position,(Vector3.Distance(car.transform.position,point.transform.position)/speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await MoveObjectToPosition(car.transform, point.transform.position, speed);
Transform point2 = GameObject.Find("11-33-2").transform;
await car.transform.DOMove(point2.transform.position, (Vector3.Distance(car.transform.position, point2.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await MoveObjectToPosition(car.transform, point2.transform.position, speed);
}
/// <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();
}
}

View File

@ -4,6 +4,7 @@ using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UIElements;
public class Enteringreservoirarea : MonoBehaviour
{
@ -91,6 +92,10 @@ public class Enteringreservoirarea : MonoBehaviour
{
}
/// <summary>
/// 箱子触发
/// </summary>
/// <param name="other"></param>
private async void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Box"))
@ -98,44 +103,63 @@ public class Enteringreservoirarea : MonoBehaviour
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 hoister.transform.DOMove(point.transform.position, (Vector3.Distance(hoister.transform.position, transportbox.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await MoveObjectToPosition(hoister.transform, point.transform.position, speed);
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);
box.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();
await MoveObjectToPosition(point.transform, transportbox.position, speed);
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();
await MoveObjectToPosition(upmachine.transform, pos.transform.position, speed);
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();
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);
Debug.Log(boxchild.name);
await point.transform.DOMove(box3.transform.position, (Vector3.Distance(point.transform.position, box3.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await MoveObjectToPosition(point.transform, box3.transform.position, speed);
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();
await MoveObjectToPosition(Palletizingarm1.transform, tongs2.transform.position, speed);
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();
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 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();
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);
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();
BoxCollider collider = point.GetComponent<BoxCollider>();
collider.center = new Vector3(0,0,0);
await MoveObjectToPosition(point.transform, box7.transform.position, speed);
await MoveObjectToPosition(Palletizingarm2.transform, tongs3.transform.position, speed);
point.transform.SetParent(box7);
}
/// <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();
}
}

View File

@ -1,10 +1,9 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static InterfaceManager;
using DefaultNamespace;
using System.Collections.Generic;
public class Fetchbox : MonoBehaviour
{

View File

@ -110,7 +110,7 @@ public class Interaction : MonoBehaviour
Debug.Log(gameObject.tag);
if (hit.collider.CompareTag("Car"))
{
Consentmark carinformation = hit.collider.gameObject.GetComponent<Consentmark>();
Carinformation carinformation = hit.collider.gameObject.GetComponent<Carinformation>();
Debug.Log(carinformation.ID);
string url = Carinterface + carinformation.ID;
StartCoroutine(Post1(url, (data) =>

View File

@ -51,6 +51,7 @@ public class Movetest : MonoBehaviour
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
Transform point7 = GameObject.Find("14-39-2").transform;
await transform.DOMove(point7.transform.position,(Vector3.Distance(transform.position,point7.transform.position)/speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await UniTask.Delay(2000);
//await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
//await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
@ -64,6 +65,13 @@ public class Movetest : MonoBehaviour
if (other.gameObject.CompareTag("Box"))
{
Carinformation car = transform.GetComponent<Carinformation>();
Boxinformation boxinformation = other.gameObject.transform.GetComponent<Boxinformation>();
if (car && boxinformation)
{
boxinformation.ID = car.BoxCode;
Debug.Log(boxinformation.ID);
}
Debug.Log("´¥·¢ÁË");
other.transform.SetParent(transform);
if (other.gameObject != null)

View File

@ -1,77 +1,60 @@
using UnityEngine;
using System;
using System.Threading;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
using System.Threading.Tasks;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Protocol;
public class MqttHslClient : MonoBehaviour
{
private MqttFactory mqttFactory = new MqttFactory();
private IMqttClient mqttClient;
void Start()
{
mqttClient = mqttFactory.CreateMqttClient();
Task.Run(async () => await ConnectToMqttBrokerAsync());
}
private async Task ConnectToMqttBrokerAsync()
{
try
{
var options = new MqttClientOptionsBuilder()
.WithTcpServer("172.16.1.104", 8083) // 使用 HiveMQ 公共代理
.WithClientId(Guid.NewGuid().ToString())
.WithCleanSession()
.Build();
//连接
var response = await mqttClient.ConnectAsync(options, CancellationToken.None);
Debug.Log(("The MQTT client is connected.") + mqttClient.IsConnected);
//生成订阅
var topicFilter = new MqttTopicFilterBuilder()
.WithTopic("car8")
.WithQualityOfServiceLevel(MqttQualityOfServiceLevel.ExactlyOnce)
.Build();
await mqttClient.SubscribeAsync(topicFilter);
mqttClient.ApplicationMessageReceivedAsync += (e =>
{
var topic = e.ApplicationMessage.Topic;
var payload = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.PayloadSegment.Array);
Debug.Log($"Topic is {topic}, Payload is {payload}");
return Task.CompletedTask;
});
}
catch (Exception e)
{
Debug.Log(e.Message);
}
}
private void HandleReceivedMessage(MqttApplicationMessageReceivedEventArgs e)
{
// 接收到 MQTT 消息时的处理逻辑
string topic = e.ApplicationMessage.Topic;
string payload = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
Debug.Log($"Received message from topic '{topic}': {payload}");
private MqttClient mqttClient;
public string brokerAddress = "172.16.1.104";//代理的地址
public int brokerPort = 8083;//代理端口
private string[] topic = { "car1", "car2", "car3", "car4", "car5" }; // 订阅的多个主题
// 如果消息是 JSON 格式,可以进行 JSON 解析
try
{
//MyDataObject data = JsonUtility.FromJson<MyDataObject>(payload);
// 现在您可以使用 data 对象中的数据
//Debug.Log($"Parsed JSON: {data}");
}
catch (Exception ex)
{
Debug.LogError($"Failed to parse JSON: {ex.Message}");
}
}
void Update()
async void Start()
{
await Task.Run(() =>
{
ConnectToMqttServer();
});
}
private void OnDestroy()
public void ConnectToMqttServer()
{
for (int i = 0; i < topic.Length; i++)
{
Debug.Log(topic[i]);
}
// 创建 MQTT 客户端实例
mqttClient = new MqttClient(brokerAddress, brokerPort, false, null, null, MqttSslProtocols.None);
// 注册消息处理函数
mqttClient.MqttMsgPublishReceived += OnMqttMsgPublishReceived;
// 连接到 MQTT 代理
mqttClient.Connect(Guid.NewGuid().ToString());
// 订阅多个主题
byte[] qosLevels = { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE };
mqttClient.Subscribe(topic, qosLevels);
}
private void OnMqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
string message = System.Text.Encoding.UTF8.GetString(e.Message);
Debug.Log($"Received message from topic {e.Topic}: {message}");
// 处理接收到的消息
}
/// <summary>
/// 结束时释放内存
/// </summary>
void OnDestroy()
{
if (mqttClient != null && mqttClient.IsConnected)
{
mqttClient.Disconnect();
}
}
}

View File

@ -0,0 +1,71 @@
using Cysharp.Threading.Tasks;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Outboundequipment : MonoBehaviour
{
/// <summary>
/// 提升机架子
/// </summary>
public GameObject frame;
/// <summary>
/// 箱子位移的速度
/// </summary>
private float speed = 5f;
/// <summary>
/// 提升机第一个点位
/// </summary>
public Transform point1;
/// <summary>
/// 提升机第二个点位
/// </summary>
public Transform point2;
/// <summary>
/// 提升机第三个点位
/// </summary>
public Transform point3;
void Start()
{
}
void Update()
{
}
private async void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Box"))
{
await Shipment(other.gameObject,frame);
}
}
/// <summary>
/// 出货
/// </summary>
/// <returns></returns>
private async UniTask Shipment(GameObject box,GameObject frame)
{
await MoveObjectToPosition(frame.transform, point1.transform.position,speed);
box.gameObject.transform.position = new Vector3(box.transform.position.x, box.transform.position.y + 0.8f, box.transform.position.z);
await MoveObjectToPosition(box.transform, point1.transform.position, speed);
box.transform.SetParent(frame.transform);
await MoveObjectToPosition(frame.transform, point2.transform.position, speed);
box.transform.SetParent(null);
await MoveObjectToPosition(box.transform, point3.transform.position, speed);
}
/// <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();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 35aa1c9c22f6c5a4e86d37ebf9872d6c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,77 @@
using Cysharp.Threading.Tasks;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shippingoffthebox : MonoBehaviour
{
/// <summary>
/// 位移速度
/// </summary>
private float speed = 5f;
async void Start()
{
await Displacement();
}
private async UniTask Displacement()
{
Transform point1 = GameObject.Find("13-40-2").transform;
await transform.DOMove(point1.transform.position, (Vector3.Distance(transform.position, point1.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point2 = GameObject.Find("13-36-2").transform;
await transform.DOMove(point2.transform.position, (Vector3.Distance(transform.position, point2.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point3 = GameObject.Find("14-36-2").transform;
await transform.DOMove(point3.transform.position, (Vector3.Distance(transform.position, point3.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point4 = GameObject.Find("4-36-2").transform;
await transform.DOMove(point4.transform.position, (Vector3.Distance(transform.position, point4.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point5 = GameObject.Find("4-31-2").transform;
await transform.DOMove(point5.transform.position, (Vector3.Distance(transform.position, point5.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
Transform point6 = GameObject.Find("3-31-2").transform;
await transform.DOMove(point6.transform.position, (Vector3.Distance(transform.position, point6.transform.position) / speed)).SetEase(Ease.Linear).AsyncWaitForCompletion();
}
void Update()
{
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Box"))
{
Carinformation car = transform.GetComponent<Carinformation>();
Boxinformation boxinformation = other.gameObject.transform.GetComponent<Boxinformation>();
if (car && boxinformation)
{
boxinformation.ID = car.BoxCode;
Debug.Log(boxinformation.ID);
}
Debug.Log("触发了");
other.transform.SetParent(transform);
if (other.gameObject != null)
{
// 获取触发器物体的碰撞体
Collider triggerCollider = GetComponent<Collider>();
// 确保触发器物体有碰撞体
if (triggerCollider != null)
{
// 计算触发器物体顶部的世界坐标
Vector3 triggerPosition = triggerCollider.bounds.center;
Vector3 triggerTop = triggerPosition + Vector3.up * (triggerCollider.bounds.extents.y + -0.2f);
// 设置物体的位置
other.transform.position = triggerTop;
}
else
{
Debug.LogError("Trigger object does not have a Collider component.");
}
}
else
{
Debug.LogError("Colliding object is not assigned.");
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c0616546235b4fc40addc3ba12ce0d0b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
using Cysharp.Threading.Tasks;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEditor.SceneManagement;
using UnityEngine;
public class Transportbox : MonoBehaviour
@ -27,9 +27,33 @@ public class Transportbox : MonoBehaviour
/// </summary>
public Transform pos;
/// <summary>
/// Ïä×ÓµÄλÖÃ
/// 箱子第一个位置点
/// </summary>
public Transform boxpos;
/// <summary>
/// 箱子第二个位置点
/// </summary>
public Transform box2;
/// <summary>
/// 提升机第四个点位
/// </summary>
public Transform box3;
/// <summary>
/// 码垛机提升抓手
/// </summary>
public GameObject tongs;
/// <summary>
/// 箱子位移第四个点位
/// </summary>
public Transform box4;
/// <summary>
/// 码垛机向下位移
/// </summary>
public Transform box5;
/// <summary>
/// 码垛机回原位
/// </summary>
public Transform box6;
void Start()
{
@ -41,6 +65,10 @@ public class Transportbox : MonoBehaviour
{
}
/// <summary>
/// 有箱子触发
/// </summary>
/// <param name="other"></param>
private async void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Box"))
@ -48,20 +76,82 @@ public class Transportbox : MonoBehaviour
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 hoister.transform.DOMove(point.transform.position, (Vector3.Distance(hoister.transform.position, transportbox.position) / speed)).SetEase(Ease.InOutQuad).AsyncWaitForCompletion();
await MoveObjectToPosition(hoister.transform, point.transform.position, speed);
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);
}
/// <summary>
/// 入库烟箱
/// </summary>
/// <param name="point"></param>
/// <param name="upmachine"></param>
/// <returns></returns>
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();
await MoveObjectToPosition(point.transform, transportbox.transform.position, speed);
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 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);
Boxinformation box = point.GetComponent<Boxinformation>();
GameObject daughter = point.transform.GetChild(0).gameObject;
daughter.transform.SetParent(null);
BoxCollider boxtwe = point.GetComponent<BoxCollider>();
boxtwe.size = new Vector3(1.3f, 1.3f, 1.3f);
boxtwe.center = new Vector3(0, 0.6f,0);
Boxinformation boxdata = daughter.AddComponent<Boxinformation>();
Assign(boxdata, box);
BoxCollider cillider = daughter.AddComponent<BoxCollider>();
cillider.size = new Vector3(1.3f, 1.3f, 1.3f);
daughter.tag = "Box";
daughter.transform.SetParent(tongs.transform);
await MoveObjectToPosition(tongs.transform, box3.transform.position, speed);
await MoveObjectToPosition(point.transform, box4.transform.position, speed);
await MoveObjectToPosition(tongs.transform, box5.transform.position, speed);
daughter.transform.SetParent(null);
await MoveObjectToPosition(tongs.transform, box6.transform.position, speed);
}
/// <summary>
/// 获取箱子身上参数
/// </summary>
/// <param name="box1"></param>
/// <param name="box2"></param>
public void Assign(Boxinformation box1, Boxinformation box2)
{
box1.ID = box2.ID;
box1.type = box2.type;
box1.locationId = box2.locationId;
box1.description = box2.description;
box1.locationState = box2.locationState;
box1.storageState = box2.storageState;
box1.layer = box2.layer;
box1.row = box2.row;
box1.column = box2.column;
box1.specialFlag = box2.specialFlag;
box1.palletNum = box2.palletNum;
box1.itemType = box2.itemType;
box1.isSpecial = box2.isSpecial;
}
/// <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();
}
}