This commit is contained in:
yulong 2024-11-05 18:07:13 +08:00
parent 3e03b0ee3a
commit 857555fa4c
35 changed files with 30075 additions and 1566 deletions

View File

@ -0,0 +1,157 @@
using UnityEngine;
using UnityEditor;
using System.Collections;
using Unity.EditorCoroutines.Editor;
#if UNITY_EDITOR
public class ModelColliderEditor : EditorWindow
{
private static float firstLayerMoveDistance = 1; // 第一层的移动距离
private static float explosionDuration = 1f; // 爆炸动画持续时间
private static readonly string[] Directions = {
"前", "后", "左", "右",
"上", "下", "前上", "前下",
"后上", "后下", "左上", "左下",
"右上", "右下"
};
[MenuItem("Tools/Add Mesh Colliders")]
public static void AddMeshColliders()
{
GameObject selectedObject = Selection.activeGameObject;
if (selectedObject == null)
{
Debug.LogError("No object selected.");
return;
}
// 遍历第一层级子物体
foreach (Transform child in selectedObject.transform)
{
AddMeshColliderAndDirection(child, selectedObject.name); // 直接调用处理函数
// 递归添加给子物体
AddMeshCollidersToChildren(child); // 使用自身位置作为新的中心
}
}
private static void AddMeshCollidersToChildren(Transform parent)
{
foreach (Transform child in parent)
{
AddMeshColliderAndDirection(child, parent.name); // 直接调用处理函数
// 递归调用
AddMeshCollidersToChildren(child); // 计算子物体的中心
}
}
private static void AddMeshColliderAndDirection(Transform child, string parentName)
{
// 添加 MeshCollider
if (child.GetComponent<MeshCollider>() == null)
{
child.gameObject.AddComponent<MeshCollider>();
}
// 添加 ModelChilderComponent 脚本
ModelChilderComponent component = child.gameObject.AddComponent<ModelChilderComponent>();
component.Parent = parentName;
// 随机选择方位
string randomDirection = Directions[Random.Range(0, Directions.Length)];
component.Direction = randomDirection;
Debug.Log($"{child.name} is at {component.Direction} from its parent.");
}
[MenuItem("Tools/Explode Objects")]
public static void ExplodeObjects()
{
GameObject selectedObject = Selection.activeGameObject;
if (selectedObject == null)
{
Debug.LogError("No object selected.");
return;
}
foreach (Transform child in selectedObject.transform)
{
EditorCoroutineUtility.StartCoroutine(Explode(child), child);
}
}
private static IEnumerator Explode(Transform parent)
{
float moveDistance = CalculateMoveDistance(0); // 假设为第一层
Vector3 targetPosition = GetTargetPosition(parent, moveDistance);
float elapsedTime = 0f;
Vector3 startingPosition = parent.localPosition;
while (elapsedTime < explosionDuration)
{
float t = elapsedTime / explosionDuration;
parent.localPosition = Vector3.Lerp(startingPosition, targetPosition, t);
elapsedTime += Time.deltaTime;
yield return null; // 等待下一帧
}
parent.localPosition = targetPosition; // 确保最终位置
}
private static Vector3 GetTargetPosition(Transform child, float distance)
{
string direction = child.GetComponent<ModelChilderComponent>()?.Direction;
switch (direction)
{
case "前":
return child.localPosition + new Vector3(0, 0, distance);
case "后":
return child.localPosition + new Vector3(0, 0, -distance);
case "左":
return child.localPosition + new Vector3(-distance, 0, 0);
case "右":
return child.localPosition + new Vector3(distance, 0, 0);
case "上":
return child.localPosition + new Vector3(0, distance, 0);
case "下":
return child.localPosition + new Vector3(0, -distance, 0);
case "前上":
return child.localPosition + new Vector3(0, distance, distance);
case "前下":
return child.localPosition + new Vector3(0, -distance, distance);
case "后上":
return child.localPosition + new Vector3(0, distance, -distance);
case "后下":
return child.localPosition + new Vector3(0, -distance, -distance);
case "左上":
return child.localPosition + new Vector3(-distance, distance, 0);
case "左下":
return child.localPosition + new Vector3(-distance, -distance, 0);
case "右上":
return child.localPosition + new Vector3(distance, distance, 0);
case "右下":
return child.localPosition + new Vector3(distance, -distance, 0);
default:
return child.localPosition; // 默认不移动
}
}
private static float CalculateMoveDistance(int level)
{
if (level == 0)
return firstLayerMoveDistance; // 第一层的移动距离
else if (level == 1)
return 7f; // 第二层的移动距离
else if (level == 2)
return 5f; // 第三层的移动距离
return 0f; // 更深层次不移动
}
}
#endif

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5bbbbd9ed8334c9aa2e509df5f18f268
timeCreated: 1730686041

View File

@ -0,0 +1,246 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-7192261185259158979
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Take 001 0
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 5776237462789136407}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 1827226128182048838, guid: fb7298f30cfa5ae4eaf512f471e507b5, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-5933228636309739764
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: "\u62C6\u5206"
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 6644890916647427872}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-3529673797996298932
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New State
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -5933228636309739764}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 0}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: "\u5FEB\u6362\u7535\u6C601"
serializedVersion: 5
m_AnimatorParameters:
- m_Name: "\u62C6\u5206"
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
- m_Name: "\u5012\u653E"
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 7616709574934098558}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &993612836927862416
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 2
m_ConditionEvent: "\u62C6\u5206"
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -3529673797996298932}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.9791667
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &4611912014660958465
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: "\u5012\u653E"
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -7192261185259158979}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.85
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &5776237462789136407
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 2
m_ConditionEvent: "\u5012\u653E"
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 6644890916647427872}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.85
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &6644890916647427872
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Take 001
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 993612836927862416}
- {fileID: 4611912014660958465}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 1827226128182048838, guid: fb7298f30cfa5ae4eaf512f471e507b5, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &7616709574934098558
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -3529673797996298932}
m_Position: {x: 300, y: 80, z: 0}
- serializedVersion: 1
m_State: {fileID: 6644890916647427872}
m_Position: {x: 350, y: 290, z: 0}
- serializedVersion: 1
m_State: {fileID: -7192261185259158979}
m_Position: {x: 570, y: 80, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -3529673797996298932}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2bda3061191089946afc8f160925801d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -86,7 +86,11 @@ namespace cakeslice
OutlineEffect.Instance.outlines.Clear();
}
OutlineEffect.Instance?.AddOutline(this);
if (gameObject==this.gameObject)
{
OutlineEffect.Instance?.AddOutline(this);
Debug.Log("添加自身");
}
}
//private void OnMouseUp()

View File

@ -13,7 +13,6 @@ GameObject:
- component: {fileID: 117189262902970689}
- component: {fileID: 4979577903660582703}
- component: {fileID: 1399729468017968744}
- component: {fileID: 4250281626495093301}
m_Layer: 0
m_Name: "\u70DF\u7BB1_\u65E0\u52A8\u753B (1)"
m_TagString: Box
@ -102,7 +101,7 @@ BoxCollider:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
@ -135,18 +134,6 @@ Rigidbody:
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!114 &4250281626495093301
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1918721954697570452}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ef5411e111cb04441a761bc6cf9a1fc6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &8394354781393860194
GameObject:
m_ObjectHideFlags: 0

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
using UnityEngine;
public class ExplodeGUI : MonoBehaviour
{
private ExplodeOnClick explodeOnClick;
private void Start()
{
// 获取 ExplodeOnClick 组件
explodeOnClick = FindObjectOfType<ExplodeOnClick>();
}
private void OnGUI()
{
if (GUI.Button(new Rect(10, 50, 100, 30), "爆炸"))
{
explodeOnClick?.Explode();
}
if (GUI.Button(new Rect(10, 0, 100, 30), "复原"))
{
explodeOnClick?.ResetPositions();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2a673f851c674cdda5873098faafb5d2
timeCreated: 1730697290

View File

@ -0,0 +1,236 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
public class ExplodeOnClick : MonoBehaviour
{
public Transform parentObject;
private Vector3[] originalPositions; // 存储原始位置
private bool isExploded = false; // 标识是否已爆炸
public List<Vector3> points;
public List<GameObject> Replacebattery = new List<GameObject>();
private bool isp = false;
private GameObject Opjgame;
public List<Vector3> colidpoints;
private void Awake()
{
for (int i = 0; i < parentObject.childCount; i++)
{
points.Add(parentObject.GetChild(i).localPosition);
Replacebattery.Add(parentObject.GetChild(i).gameObject);
}
}
void Update()
{
if (Input.GetMouseButtonDown(0) && isExploded) // 鼠标左键点击
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (Namedata(hit.collider.gameObject.transform.parent.name))
{
Debug.Log("有相同名字");
Debug.Log(hit.collider.gameObject.transform.parent.name);
Showdata(hit.collider.gameObject.transform.parent.name);
Opjgame = hit.collider.gameObject.transform.parent.gameObject;
}
// 检查点击的物体是否有 ModelChilderComponent
//ModelChilderComponent childComponent = hit.transform.GetComponent<ModelChilderComponent>();
//if (childComponent != null)
//{
// parentObject = hit.transform.parent; // 保存父对象
// originalPositions = new Vector3[parentObject.childCount]; // 初始化原始位置数组
// // 保存原始位置
// for (int i = 0; i < parentObject.childCount; i++)
// {
// originalPositions[i] = parentObject.GetChild(i).localPosition;
// }
//}
}
}
}
public void Show()
{
if (Replacebattery.Count > 0)
{
for(int i = 0;i < Replacebattery.Count; i++)
{
Replacebattery[i].gameObject.SetActive(true);
}
}
}
/// <summary>
/// 子物体实现爆炸效果
/// </summary>
public void Blowup()
{
if (!isp && Opjgame)
{
if (colidpoints.Count > 0)
{
colidpoints.Clear();
}
foreach (Transform child in Opjgame.transform)
{
colidpoints.Add(child.localPosition);
float moveDistance = CalculateMoveDistance(1);
Vector3 targetPosition = GetTargetPosition(child.transform, moveDistance);
StartCoroutine(MoveToPosition(child, targetPosition));
}
isp = true;
}
}
/// <summary>
/// 还原子物体
/// </summary>
public void Restore()
{
if (isp && Opjgame)
{
for (int i = 0; i < Opjgame.transform.childCount; i++)
{
Transform child = Opjgame.transform.GetChild(i);
StartCoroutine(MoveToPosition(child, colidpoints[i]));
}
isp = false;
}
}
public void Explode()
{
if (!isExploded)
{
foreach (Transform child in parentObject)
{
float moveDistance = CalculateMoveDistance(0); // 假设为第一层
Vector3 targetPosition = GetTargetPosition(child, moveDistance);
// 这里可以实现动画效果,比如使用协程来移动物体
StartCoroutine(MoveToPosition(child, targetPosition));
}
isExploded = true; // 标记为已爆炸
}
}
public void ResetPositions() // 复原位置的方法
{
if (isExploded)
{
for (int i = 0; i < parentObject.childCount; i++)
{
Transform child = parentObject.GetChild(i);
StartCoroutine(MoveToPosition(child, points[i]));
}
isExploded = false; // 标记为未爆炸
}
}
private IEnumerator MoveToPosition(Transform child, Vector3 targetPosition)
{
float elapsedTime = 0f;
Vector3 startingPosition = child.localPosition;
while (elapsedTime < 1f) // 1秒内完成移动
{
child.localPosition = Vector3.Lerp(startingPosition, targetPosition, elapsedTime);
elapsedTime += Time.deltaTime;
yield return null; // 等待下一帧
}
child.localPosition = targetPosition; // 确保最终位置
}
private Vector3 GetTargetPosition(Transform child, float distance)
{
string direction = child.GetComponent<ModelChilderComponent>()?.Direction;
switch (direction)
{
case "前":
return child.localPosition + new Vector3(0, 0, distance);
case "后":
return child.localPosition + new Vector3(0, 0, -distance);
case "左":
return child.localPosition + new Vector3(-distance, 0, 0);
case "右":
return child.localPosition + new Vector3(distance, 0, 0);
case "上":
return child.localPosition + new Vector3(0, distance, 0);
case "下":
return child.localPosition + new Vector3(0, -distance, 0);
case "前上":
return child.localPosition + new Vector3(0, distance, distance);
case "前下":
return child.localPosition + new Vector3(0, -distance, distance);
case "后上":
return child.localPosition + new Vector3(0, distance, -distance);
case "后下":
return child.localPosition + new Vector3(0, -distance, -distance);
case "左上":
return child.localPosition + new Vector3(-distance, distance, 0);
case "左下":
return child.localPosition + new Vector3(-distance, -distance, 0);
case "右上":
return child.localPosition + new Vector3(distance, distance, 0);
case "右下":
return child.localPosition + new Vector3(distance, -distance, 0);
default:
return child.localPosition; // 默认不移动
}
}
private float CalculateMoveDistance(int level)
{
if (level == 0)
return 5; // 自定义第一层的移动距离
else if (level == 1)
return 3f; // 第二层的移动距离
else if (level == 2)
return 1f; // 第三层的移动距离
return 0f; // 更深层次不移动
}
/// <summary>
/// 判断链表是否有这个名字
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
private bool Namedata(string name)
{
if (Replacebattery.Count > 0)
{
for (int i = 0; i < Replacebattery.Count; i++)
{
if (Replacebattery[i].name == name)
{
return true;
}
}
}
return false;
}
/// <summary>
/// 展示对应的子物体
/// </summary>
/// <param name="name"></param>
public void Showdata(string name)
{
if (Replacebattery.Count > 0)
{
for (int i = 0; i < Replacebattery.Count; i++)
{
if (Replacebattery[i].name == name)
{
Replacebattery[i].SetActive(true);
}
else
{
Replacebattery[i].SetActive(false);
}
}
}
}
}

View File

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

View File

@ -0,0 +1,8 @@
using UnityEngine;
public class ModelChilderComponent : MonoBehaviour
{
public string Parent;
public string Direction ;
public Vector3 BoundsCenter ; // 新增的属性,用于保存边界中心
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,40 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class RevealName : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
/// <summary>
/// 提示
/// </summary>
public Transform Tips;
/// <summary>
/// 提示文本
/// </summary>
public Text tiptext;
/// <summary>
/// 接收初始化位置
/// </summary>
public Vector3 Point;
public void OnPointerEnter(PointerEventData eventData)
{
tiptext.text = transform.name;
Tips.position = eventData.position;
}
public void OnPointerExit(PointerEventData eventData)
{
tiptext.text = "";
Tips.position = Point;
}
private void Awake()
{
Point = Tips.position;
}
void Update()
{
}
}

View File

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

View File

@ -308,31 +308,31 @@ namespace DefaultNamespace
/// <summary>
///
/// </summary>
public string Cigarette_Box_Type { get; set; }
public string TaskNumber { get; set; }
/// <summary>
///
/// </summary>
public string Current_Layer { get; set; }
public string BoxType { get; set; }
/// <summary>
///
/// </summary>
public string LowerBoxNumber { get; set; }
/// <summary>
///
/// </summary>
public string CurrentLayer { get; set; }
/// <summary>
///
/// </summary>
public string FaultFree { get; set; }
/// <summary>
///
/// </summary>
public string Ascent { get; set; }
/// <summary>
///
/// </summary>
public string Descent { get; set; }
/// <summary>
///
/// </summary>
public string Lower_Box_Number { get; set; }
/// <summary>
///
/// </summary>
public string Rise { get; set; }
/// <summary>
///
/// </summary>
public string Task_Number { get; set; }
/// <summary>
///
/// </summary>
public string Trouble_Free { get; set; }
}
/// <summary>
/// 拆码垛机
@ -347,15 +347,19 @@ namespace DefaultNamespace
/// <summary>
///
/// </summary>
public string Task_Number { get; set; }
public string TaskNumber { get; set; }
/// <summary>
///
/// </summary>
public string Number_of_cigarette_boxes { get; set; }
public string boxesNumber { get; set; }
/// <summary>
///
/// </summary>
public string Trouble_free { get; set; }
public string FaultFree { get; set; }
/// <summary>
///
/// </summary>
public string Ascent { get; set; }
/// <summary>
///
/// </summary>
@ -363,7 +367,23 @@ namespace DefaultNamespace
/// <summary>
///
/// </summary>
public string Rise { get; set; }
public string ExtensingFork { get; set; }
/// <summary>
///
/// </summary>
public string RetractingFork { get; set; }
/// <summary>
///
/// </summary>
public string UpperInPlace { get; set; }
/// <summary>
///
/// </summary>
public string MiddleInPlace { get; set; }
/// <summary>
///
/// </summary>
public string DownInPlace { get; set; }
}
/// <summary>
/// 输送机设备
@ -374,63 +394,63 @@ namespace DefaultNamespace
/// <summary>
///
/// </summary>
public string Id { get; set; }
public string Id;
/// <summary>
///
/// </summary>
public string ForwardRotation { get; set; }
public string TaskNumber;
/// <summary>
///
/// </summary>
public string LowerBoxNumber { get; set; }
public string LowerBoxNumber;
/// <summary>
///
/// </summary>
public string NumberOfCigaretteBoxes { get; set; }
public string LowerBoxTobaccoWeight;
/// <summary>
///
/// </summary>
public string OccupiedSign { get; set; }
public string UpperBoxNumber;
/// <summary>
///
/// </summary>
public string Reverse { get; set; }
public string UpperBoxTobaccoWeight;
/// <summary>
///
/// </summary>
public string RFIDReadFailure { get; set; }
public string BoxesNumber;
/// <summary>
///
/// </summary>
public string RFIDWriteFailure { get; set; }
public string OccupiedMark;
/// <summary>
///
/// </summary>
public string TaskNumber { get; set; }
public string FaultFree;
/// <summary>
///
/// </summary>
public string TroubleFree { get; set; }
public string ForwardRotation;
/// <summary>
///
/// </summary>
public string UpperBoxNumber { get; set; }
public string ReverseRotation;
/// <summary>
///
/// </summary>
public string WCSRequestTimeoutFault { get; set; }
public string RFIDReadFault;
/// <summary>
///
/// </summary>
public string WCSTaskExceptionFailure { get; set; }
public string RFIDWriteFailure;
/// <summary>
///
/// </summary>
public string WeightTobaccoLower { get; set; }
public string WCSTaskAbnormalFailure;
/// <summary>
///
/// </summary>
public string WeightTobaccoUpper { get; set; }
public string WCSApplicationTimeoutFailure;
}
/// <summary>
/// 小车设备
@ -445,7 +465,7 @@ namespace DefaultNamespace
/// <summary>
///
/// </summary>
public string CarState_BoxCode { get; set; }
public string JobState_BoxCode { get; set; }
/// <summary>
///
/// </summary>
@ -469,6 +489,14 @@ namespace DefaultNamespace
/// <summary>
///
/// </summary>
public string JobState_CarPlt { get; set; }
/// <summary>
///
/// </summary>
public string CarState_Err01 { get; set; }
/// <summary>
///
/// </summary>
public string CarState_Err02 { get; set; }
/// <summary>
///
@ -482,14 +510,6 @@ namespace DefaultNamespace
///
/// </summary>
public string CarState_Err05 { get; set; }
/// <summary>
///
/// </summary>
public string CarState_Err01 { get; set; }
/// <summary>
///
/// </summary>
public string JobState_CarPlt { get; set; }
}
/// <summary>
/// 查询式落地机
@ -1681,6 +1701,7 @@ namespace DefaultNamespace
///
/// </summary>
public string palletType;
public string rfIdCode;
/// <summary>
///
/// </summary>

30
Assets/Scripts/Testone.cs Normal file
View File

@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Testone : MonoBehaviour
{
public Animator Animation;
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
//Animation.speed = 1;
Animation.SetBool("²ð·Ö", true);
}
if (Input.GetKeyDown(KeyCode.B))
{
Animation.speed = -1;
}
}
IEnumerator Test()
{
yield return new WaitForSeconds(1);
}
}

View File

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

View File

@ -1,23 +1,285 @@
using DefaultNamespace;
using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.ConstrainedExecution;
using UnityEngine;
using static InterfaceManager;
public class Carinformation : MonoBehaviour
{
/// <summary>
/// 小车ID
/// </summary>
public string ID;
/// <summary>
/// 获取mqtt数据对应的箱子id
/// 小车名字
/// </summary>
public string BoxCode;
public string Name;
/// <summary>
/// 需要渲染的箱子0
/// </summary>
public GameObject BoxID;
/// <summary>
/// 普通实箱
/// </summary>
public Material Commonfruitbox;
/// <summary>
/// 普通空箱
/// </summary>
public Material Normalairbox;
/// <summary>
/// 特殊实箱
/// </summary>
public Material Specialkernelbox;
/// <summary>
/// 特殊空箱
/// </summary>
public Material Specialbox;
/// <summary>
/// 是否初始化
/// </summary>
private bool isInit = false;
/// <summary>
/// 小车速度
/// </summary>
public float Speed = 3.5f;
void Start()
{
}
// Update is called once per frame
}
void Update()
{
}
/// <summary>
/// 点位,初始发,是否装箱子,是否卸箱子
/// </summary>
/// <param name="carequipment"></param>
public void Setbox(Carequipment carequipment)
{
string pointName = carequipment.CarState_Car_Row + "-" + carequipment.CarState_Car_Column + "-" + carequipment.CarState_Car_Layer;
if (MqttManager.Instance.GetTransformByName(pointName))
{
Transform currentPoint = MqttManager.Instance.GetTransformByName(pointName);
if (currentPoint && !isInit)
{
SetPoint(currentPoint);
if (carequipment.CarState_CarPlt == "2" && currentPoint.childCount == 0 && transform.childCount == 0 && carequipment.JobState_BoxCode != "0")
{
Initbox(carequipment.JobState_BoxCode, carequipment.CarState_Car_Layer);
}
isInit = true;
}
else
{
Designateddisplacement(currentPoint.position, Speed);
}
if (carequipment.CarState_CarPlt == "2")
{
Encasement(currentPoint);
}
else if (carequipment.CarState_CarPlt == "1")
{
UnloadBox(currentPoint);
}
}
}
/// <summary>
/// 小车移动动画
/// </summary>
/// <param name="dis"></param>
/// <param name="speed"></param>
public void Designateddisplacement(Vector3 dis, float speed)
{
Debug.Log("小车运动了");
float times = Vector3.Distance(transform.position, dis) / speed;
transform.DOMove(dis, times).SetEase(Ease.InOutQuad);
}
/// <summary>
/// 初始化赋值
/// </summary>
/// <param name="point"></param>
public void SetPoint(Transform point)
{
transform.position = point.position;
}
/// <summary>
/// 初始化箱子把箱子放到小车上并判断生成箱子颜色
/// </summary>
/// <param name="boxdata"></param>
public void Initbox(string boxdata, string layer)
{
string url = Initializes + boxdata;
Debug.Log("箱子ID" + boxdata);
Debug.Log("箱子请求路径" + url);
StartCoroutine(Getstring(url, (data) =>
{
Debug.Log("初始发对应的箱子数据" + data);
ShelfBoxModel shelfBoxModel = JsonUtility.FromJson<ShelfBoxModel>(data);
if (shelfBoxModel != null && BoxID)
{
GameObject box = Instantiate(BoxID, transform);
Boxinformation boxinformation = box.AddComponent<Boxinformation>();
if (boxinformation != null)
{
boxinformation.ID = shelfBoxModel.result[0].id;
boxinformation.type = shelfBoxModel.result[0].type;
boxinformation.locationId = shelfBoxModel.result[0].locationId;
boxinformation.description = shelfBoxModel.result[0].description;
boxinformation.locationState = shelfBoxModel.result[0].locationState;
boxinformation.storageState = shelfBoxModel.result[0].storageState;
boxinformation.layer = shelfBoxModel.result[0].layer;
boxinformation.row = shelfBoxModel.result[0].row;
boxinformation.column = shelfBoxModel.result[0].column;
boxinformation.specialFlag = shelfBoxModel.result[0].specialFlag;
boxinformation.palletNum = shelfBoxModel.result[0].palletNum;
boxinformation.itemType = shelfBoxModel.result[0].itemType;
boxinformation.isSpecial = shelfBoxModel.result[0].isSpecial;
switch (shelfBoxModel.result[0].isSpecial)
{
case 0:
if (shelfBoxModel.result[0].itemType == "EmptyBox")
{
Renderer renderer = box.GetComponent<Renderer>();
Renderer renderer1 = box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer != null)
{
renderer.material = Specialbox;
}
if (renderer1 != null)
{
renderer1.material = Specialbox;
}
}
else
{
Renderer renderer2 = box.GetComponent<Renderer>();
Renderer renderer3 = box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer2 != null)
{
renderer2.material = Specialkernelbox;
}
if (renderer3 != null)
{
renderer3.material = Specialkernelbox;
}
}
break;
case 1:
if (shelfBoxModel.result[0].itemType == "EmptyBox")
{
Renderer renderer = box.GetComponent<Renderer>();
Renderer renderer1 = box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer != null)
{
renderer.material = Normalairbox;
}
if (renderer1 != null)
{
renderer1.material = Normalairbox;
}
}
else
{
Renderer renderer2 = box.GetComponent<Renderer>();
Renderer renderer3 = box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer2 != null)
{
renderer2.material = Commonfruitbox;
}
if (renderer3 != null)
{
renderer3.material = Commonfruitbox;
}
}
break;
default:
break;
}
Collider triggerCollider = GetComponent<Collider>();
// 确保触发器物体有碰撞体
if (triggerCollider != null)
{
// 计算触发器物体顶部的世界坐标
Vector3 triggerPosition = triggerCollider.bounds.center;
Vector3 triggerTop = triggerPosition + Vector3.up * (triggerCollider.bounds.extents.y);
// 设置物体的位置
box.gameObject.transform.localEulerAngles = new Vector3(90, 0, 0);
box.gameObject.transform.position = triggerTop;
box.gameObject.transform.SetParent(transform, false);
Debug.Log("箱子位置初始化");
MqttManager.Instance.Deletebox(boxinformation.ID, boxinformation);
}
else
{
Debug.LogError("触发器没有碰撞体");
}
}
if (layer.Equals(1))
{
GameObject childbox = box.transform.GetChild(0).gameObject;
MqttManager.Instance.firstbox.Add(childbox);
MqttManager.Instance.firstbox.Add(box);
}
else
{
GameObject childbox = box.transform.GetChild(0).gameObject;
MqttManager.Instance.secondbox.Add(childbox);
MqttManager.Instance.secondbox.Add(box);
}
}
}));
}
/// <summary>
/// 执行上箱
/// </summary>
/// <param name="point"></param>
public void Encasement(Transform point)
{
if (point.childCount > 0)
{
Collider collider = point.GetChild(0).gameObject.GetComponent<Collider>();
if (collider != null)
{
collider.isTrigger = true;
}
}
}
/// <summary>
/// 执行卸箱
/// </summary>
public void UnloadBox(Transform point)
{
if (transform.childCount > 0)
{
GameObject box = transform.GetChild(0).gameObject;
if (box != null)
{
box.gameObject.transform.DOMoveY(box.gameObject.transform.position.y + 0.2f, 0.2f).SetEase(Ease.InOutQuad).OnComplete(() =>
{
if (box.GetComponent<Collider>())
{
Collider collider = box.GetComponent<Collider>();
if (collider != null)
{
collider.isTrigger = false;
box.gameObject.transform.SetParent(null);
}
box.gameObject.transform.DOMoveY(box.gameObject.transform.position.y - 0.62f, 0.6f).SetEase(Ease.InOutQuad).OnComplete(() =>
{
if (point)
{
box.gameObject.transform.SetParent(point);
}
});
}
});
}
}
}
}

View File

@ -1,9 +1,14 @@
using DefaultNamespace;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Consentmark : MonoBehaviour
{
/// <summary>
/// 所有设备id
/// </summary>
public string ID;
}

View File

@ -0,0 +1,140 @@
using DefaultNamespace;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class Conveyordata : MonoBehaviour
{
/// <summary>
/// 输送机ID
/// </summary>
public string ID;
/// <summary>
/// 正转位置
/// </summary>
[Header("正传需要位移的位置")]
public Transform Pointforword;
/// <summary>
/// 反转位置
/// </summary>
[Header("正传判断箱子位置")]
public Transform Pointreversal;
/// <summary>
/// 提升机反转位置
/// </summary>
[Header("一层反转提升机位置")]
public Transform Liftreversal;
[Header("二层反转提升机位置")]
public Transform Liftreversal2;
[Header("反转判断箱子点位")]
public Transform Antipoint;
[Header("反转需要位移的位置")]
public Transform Antipoint2;
/// <summary>
/// 运动的速度
/// </summary>
public float Speed = 3.5f;
public void ConveyorData(Convoyorequipment convoyorequipment)
{
if (convoyorequipment.TaskNumber != "0")
{
if (convoyorequipment.ForwardRotation == "True")
{
Debug.Log("正转");
Forwardposition();
}
if (convoyorequipment.ReverseRotation == "True")
{
Debug.Log("反转");
Reverseposition();
}
}
}
/// <summary>
/// 正传运动
/// </summary>
public void Forwardposition()
{
if (Pointreversal.childCount > 0 && Pointreversal)
{
GameObject box = Pointreversal.transform.GetChild(0).gameObject;
if (box != null)
{
box.transform.SetParent(null);
box.transform.DOMove(Pointforword.position, (Vector3.Distance(box.transform.position, Pointforword.transform.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Pointforword);
});
}
}
}
/// <summary>
/// 反转运动
/// </summary>
public void Reverseposition()
{
if (GetComponent<Hoistmovement>())
{
Hoistmovement hoistmovement = GetComponent<Hoistmovement>();
Debug.Log("一层");
if (hoistmovement.Downpoint.childCount > 0 && Liftreversal)
{
Debug.Log("进来了");
GameObject box = hoistmovement.Downpoint.transform.GetChild(0).gameObject;
if (box != null)
{
Debug.Log("反转一层");
box.transform.SetParent(null);
box.transform.DOMove(Liftreversal.position, (Vector3.Distance(box.transform.position, Liftreversal.transform.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Liftreversal);
});
}
}
else if (hoistmovement.UPpoint.childCount > 0 && Liftreversal2)
{
Debug.Log("进来了");
GameObject box = hoistmovement.UPpoint.transform.GetChild(0).gameObject;
if (box != null)
{
Debug.Log("反转二层");
box.transform.SetParent(null);
box.transform.DOMove(Liftreversal2.position, (Vector3.Distance(box.transform.position, Liftreversal2.transform.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Liftreversal2);
});
}
}
}
else if (Antipoint)
{
if (Antipoint.childCount > 0)
{
GameObject box = Antipoint.transform.GetChild(0).gameObject;
if (box != null)
{
box.transform.SetParent(null);
box.transform.DOMove(Antipoint2.position, (Vector3.Distance(box.transform.position, Antipoint2.transform.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
Debug.Log("正常反转");
box.transform.SetParent(Antipoint2);
});
}
else
{
Debug.Log("箱子等于空");
}
}
else
{
Debug.Log("不走反转");
}
}
else
{
Debug.Log("啥也不是");
}
}
}

View File

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

View File

@ -101,10 +101,10 @@ public class Enteringreservoirarea : MonoBehaviour
/// <param name="other"></param>
private async void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Box"))
{
await Makeprogress(other.gameObject, Uptrans);
}
//if (other.gameObject.CompareTag("Box"))
//{
// await Makeprogress(other.gameObject, Uptrans);
//}
}
/// <summary>
///

View File

@ -5,6 +5,7 @@ using static InterfaceManager;
using DefaultNamespace;
using System.Collections.Generic;
using cakeslice;
using System.Runtime.ConstrainedExecution;
public class Fetchbox : MonoBehaviour
{
/// <summary>
@ -20,10 +21,21 @@ public class Fetchbox : MonoBehaviour
/// </summary>
public ShelfBoxModel shelfBoxModel = new ShelfBoxModel();
/// <summary>
/// 每个箱子的信息
/// 普通实箱
/// </summary>
public List<Boxinformation> boxinformationList = new List<Boxinformation>();
public Material Commonfruitbox;
/// <summary>
/// 普通空箱
/// </summary>
public Material Normalairbox;
/// <summary>
/// 特殊实箱
/// </summary>
public Material Specialkernelbox;
/// <summary>
/// 特殊空箱
/// </summary>
public Material Specialbox;
private void Start()
{
url += Boxface;
@ -31,8 +43,28 @@ public class Fetchbox : MonoBehaviour
{
//Debug.Log(data);
Boxdata(data);
Debug.Log("调用l");
//Debug.Log("调用l");
}));
}
void Update()
{
//if (Input.GetMouseButtonDown(2))
//{
// if (MqttManager.Instance.boxinformationList.Count > 0)
// {
// for (int i = 0; i < MqttManager.Instance.boxinformationList.Count; i++)
// {
// Debug.Log("劲来了");
// if (MqttManager.Instance.boxinformationList[i].ID == "XSCS_01_010100100400100")
// {
// Debug.Log("删除");
// Destroy(MqttManager.Instance.boxinformationList[i].gameObject);
// MqttManager.Instance.boxinformationList.Remove(MqttManager.Instance.boxinformationList[i]);
// }
// }
// }
//}
}
/// <summary>
/// ½âÎöÏä×ÓµÄÊý¾Ý
@ -57,6 +89,7 @@ public class Fetchbox : MonoBehaviour
GameObject parentObject = GameObject.Find(boxname);
if (parentObject)
{
//MqttManager.Instance.boxinpots.Add(boxname);
Box.transform.SetParent(parentObject.transform, false);
boxinformation.ID = shelfBoxModel.result[i].id;
boxinformation.type = shelfBoxModel.result[i].type;
@ -71,8 +104,68 @@ public class Fetchbox : MonoBehaviour
boxinformation.palletNum = shelfBoxModel.result[i].palletNum;
boxinformation.itemType = shelfBoxModel.result[i].itemType;
boxinformation.isSpecial = shelfBoxModel.result[i].isSpecial;
//if (shelfBoxModel.result[i].
boxinformationList.Add(boxinformation);
switch (shelfBoxModel.result[i].isSpecial)
{
case 0:
if (shelfBoxModel.result[i].itemType == "EmptyBox")
{
Renderer renderer = Box.GetComponent<Renderer>();
Renderer renderer1 = Box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer != null)
{
renderer.material = Specialbox;
}
if (renderer1 != null)
{
renderer1.material = Specialbox;
}
}
else
{
Renderer renderer2 = Box.GetComponent<Renderer>();
Renderer renderer3 = Box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer2 != null)
{
renderer2.material = Specialkernelbox;
}
if (renderer3 != null)
{
renderer3.material = Specialkernelbox;
}
}
break;
case 1:
if (shelfBoxModel.result[i].itemType == "EmptyBox")
{
Renderer renderer = Box.GetComponent<Renderer>();
Renderer renderer1 = Box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer != null)
{
renderer.material = Normalairbox;
}
if (renderer1 != null)
{
renderer1.material = Normalairbox;
}
}
else
{
Renderer renderer2 = Box.GetComponent<Renderer>();
Renderer renderer3 = Box.transform.GetChild(0).GetComponent<Renderer>();
if (renderer2 != null)
{
renderer2.material = Commonfruitbox;
}
if (renderer3 != null)
{
renderer3.material = Commonfruitbox;
}
}
break;
default:
break;
}
MqttManager.Instance.boxinformationList.Add(boxinformation);
if (shelfBoxModel.result[i].layer.Equals(1))
{
GameObject childbox = Box.transform.GetChild(0).gameObject;

View File

@ -0,0 +1,91 @@
using DefaultNamespace;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Hoistmovement : MonoBehaviour
{
/// <summary>
/// 提升机ID
/// </summary>
public string ID;
/// <summary>
/// 一层位置
/// </summary>
public Transform Downpoint;
/// <summary>
/// 二层位置
/// </summary>
public Transform UPpoint;
/// <summary>
/// 运动的速度
/// </summary>
public float Speed = 3.5f;
public void Hoister(Elvequipment elvequipment)
{
if (elvequipment.CurrentLayer == "1")
{
Debug.Log("一层");
Alayer();
}
else if(elvequipment.CurrentLayer == "2")
{
Debug.Log("二层");
Layertwo();
}
}
/// <summary>
/// 下降到一层
/// </summary>
public void Alayer()
{
if (UPpoint.childCount > 0)
{
GameObject box = UPpoint.GetChild(0).gameObject;
if (box != null)
{
box.transform.SetParent(transform);
transform.DOMove(Downpoint.position, (Vector3.Distance(transform.position, Downpoint.transform.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Downpoint);
});
}
}
else
{
Designateddisplacement(Downpoint.position,Speed);
}
}
/// <summary>
/// 上升二层
/// </summary>
public void Layertwo()
{
if(Downpoint.childCount > 0)
{
GameObject box = Downpoint.GetChild(0).gameObject;
if(box != null)
{
box.transform.SetParent(transform);
transform.DOMove(UPpoint.position, (Vector3.Distance(transform.position, UPpoint.transform.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(UPpoint);
});
}
}
else
{
Designateddisplacement(UPpoint.position, Speed);
}
}
/// <summary>
/// 移动方法
/// </summary>
public void Designateddisplacement(Vector3 dis, float speed)
{
Debug.Log("提升机移动");
float times = Vector3.Distance(transform.position, dis) / speed;
transform.DOMove(dis, times).SetEase(Ease.InOutQuad);
}
}

View File

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

View File

@ -65,7 +65,7 @@ public class Interaction : MonoBehaviour
{
boxbtn.onClick.AddListener(Tests);
}
private void Tests()
public void Tests()
{
switch (status)
{
@ -146,7 +146,7 @@ public class Interaction : MonoBehaviour
//}
//Debug.Log(boxinformation.locationId);
string url = Boxinformationface + boxinformation.locationId;
Debug.Log(url);
//Debug.Log(url);
StartCoroutine(Post1(url, (data) =>
{
Debug.Log(data);
@ -156,11 +156,13 @@ public class Interaction : MonoBehaviour
{
if (cigaretteinformation.result[i].lineNum.Equals(1))
{
UIBoxdatapanel.Getdata(cigaretteinformation.result[i].itemDesc, cigaretteinformation.result[i].batch, cigaretteinformation.result[i].palletNum, cigaretteinformation.result[i].weight);
UIBoxdatapanel.GetDragdown(cigaretteinformation.result[i].rfIdCode, cigaretteinformation.result[i].weight);
};
if (cigaretteinformation.result[i].lineNum.Equals(2))
{
UIBoxdatapanel.GetDragdown(cigaretteinformation.result[i].palletNum, cigaretteinformation.result[i].weight);
UIBoxdatapanel.Getdata(cigaretteinformation.result[i].itemDesc, cigaretteinformation.result[i].batch, cigaretteinformation.result[i].palletNum, cigaretteinformation.result[i].weight);
}
}
UIBoxdatapanel.Getoff(() =>
@ -174,14 +176,14 @@ public class Interaction : MonoBehaviour
}
if (hit.collider.CompareTag("Hoister"))
{
Debug.Log(gameObject.name);
//Debug.Log(gameObject.name);
Consentmark hoistinformation = hit.collider.gameObject.GetComponent<Consentmark>();
// Debug.Log(hoistinformation.ID);
string url = Hoisinterface + hoistinformation.ID;
// Debug.Log(url);
StartCoroutine(Post1(url, (data) =>
{
Debug.Log(data);
//Debug.Log(data);
Elevatorpopup elevatdata = JsonUtility.FromJson<Elevatorpopup>(data);
// Debug.Log(elevatdata.result.lowerDecelerationInspection);
UIHoister.Gethoister(elevatdata.result.taskNumber, elevatdata.result.currentLayer, elevatdata.result.targetLayer, elevatdata.result.startingLayer,
@ -198,14 +200,14 @@ public class Interaction : MonoBehaviour
}
if (hit.collider.CompareTag("Palletizer"))
{
Debug.Log(gameObject.name);
//Debug.Log(gameObject.name);
Consentmark palletizerparameters = hit.collider.gameObject.GetComponent<Consentmark>();
// Debug.Log(palletizerparameters.ID);
string url = Palletizerface + palletizerparameters.ID;
//Debug.Log(url);
StartCoroutine(Post1(url, (data) =>
{
Debug.Log(data);
//Debug.Log(data);
PalletizerMessage palletizer = JsonUtility.FromJson<PalletizerMessage>(data);
// Debug.Log(palletizer.result.id);
UIPalletizer.Getpalletizer(palletizer.result.boxesNumber, palletizer.result.leftExtensionForkPositionInspection, palletizer.result.rightExtensionForkPositionInspection,
@ -222,14 +224,14 @@ public class Interaction : MonoBehaviour
}
if (hit.collider.CompareTag("Battery"))
{
Debug.Log(gameObject.name);
//Debug.Log(gameObject.name);
Consentmark batterychanger = hit.collider.gameObject.GetComponent<Consentmark>();
//Debug.Log(batterychanger.ID);
string url = Batteryface + batterychanger.ID;
// Debug.Log(url);
StartCoroutine(Post1(url, (data) =>
{
Debug.Log(data);
//Debug.Log(data);
Batterydata batterydata = JsonUtility.FromJson<Batterydata>(data);
Debug.Log(batterydata.result.id);
UIReplacebattery.Getbattery(batterydata.result.taskNumber, batterydata.result.batteryStatus0, batterydata.result.batteryStatus1, batterydata.result.batteryStatus2, batterydata.result.batteryStatus3,
@ -244,14 +246,14 @@ public class Interaction : MonoBehaviour
}
if (hit.collider.CompareTag("Outofthe"))
{
Debug.Log(gameObject.name);
//Debug.Log(gameObject.name);
Consentmark outofthe = hit.collider.GetComponent<Consentmark>();
// Debug.Log(outofthe.ID);
string url = Outoftheface + outofthe.ID;
// Debug.Log(url);
StartCoroutine(Post1(url, (data) =>
{
Debug.Log(data);
//Debug.Log(data);
Conveyors outofthe = JsonUtility.FromJson<Conveyors>(data);
Debug.Log(outofthe.result.id);
UIConveyorpanel.Getconvey(outofthe.result.taskNumber, outofthe.result.upperBoxNumber, outofthe.result.startingAddress, outofthe.result.upperBoxTobaccoWeight, outofthe.result.destinationAddress, outofthe.result.lowerBoxNumber,
@ -266,14 +268,14 @@ public class Interaction : MonoBehaviour
}
if (hit.collider.CompareTag("Intothe"))
{
Debug.Log(gameObject.name);
//Debug.Log(gameObject.name);
Consentmark intothes = hit.collider.GetComponent<Consentmark>();
// Debug.Log(intothes.ID);
string url = Intotheface + intothes.ID;
// Debug.Log(url);
StartCoroutine(Post1(url, (data) =>
{
Debug.Log(data);
//Debug.Log(data);
Conveyors intothe = JsonUtility.FromJson<Conveyors>(data);
//Debug.Log(intothe.result.id);
UIConveyorpanel.Getconvey(intothe.result.taskNumber, intothe.result.upperBoxNumber, intothe.result.startingAddress, intothe.result.upperBoxTobaccoWeight, intothe.result.destinationAddress, intothe.result.lowerBoxNumber,
@ -288,14 +290,14 @@ public class Interaction : MonoBehaviour
}
if (hit.collider.CompareTag("floortype"))
{
Debug.Log(gameObject.name);
//Debug.Log(gameObject.name);
Consentmark floor = hit.collider.gameObject.GetComponent<Consentmark>();
//Debug.Log(floor.ID);
string url = Floorface + floor.ID;
//Debug.Log(url);
StartCoroutine(Post1(url, (data) =>
{
Debug.Log(data);
//Debug.Log(data);
Feequipments feequipments = JsonUtility.FromJson<Feequipments>(data);
//Debug.Log(feequipments.result.id);
UIFloorelevator.Getfloorele(feequipments.result.deviceStatus, feequipments.result.upperInPlace, feequipments.result.ascent, feequipments.result.upperLimitInspection,
@ -311,14 +313,14 @@ public class Interaction : MonoBehaviour
}
if (hit.collider.CompareTag("decap"))
{
Debug.Log(gameObject.name);
//Debug.Log(gameObject.name);
Consentmark decaps = hit.collider.gameObject.GetComponent<Consentmark>();
//Debug.Log(decaps.ID);
string url = Decapface + decaps.ID;
Debug.Log(url);
//Debug.Log(url);
StartCoroutine(Post1(url, (data) =>
{
Debug.Log(data);
//Debug.Log(data);
Decappingmachine decappingmachine = JsonUtility.FromJson<Decappingmachine>(data);
// Debug.Log(decappingmachine.result.id);
UICoverremovalmachine.Getdecap(decappingmachine.result.caseLidStatus, decappingmachine.result.frontInPlaceInspection, decappingmachine.result.rearInPlaceInspection, decappingmachine.result.frontDecelerationInspection,

View File

@ -76,6 +76,10 @@ public static class InterfaceManager
/// Èë¿â»ú
/// </summary>
public static string Intotheface { get => IpAddress + "/api/kepserver/convoyors_IN_Info/"; }
/// <summary>
/// MQTT³õʼ»¯½Ó¿Ú
/// </summary>
public static string Initializes { get => IpAddress + "/api/wmsLocation/palletDetailByPalletNum/"; }
public static IEnumerator Getbytes(string url, Action<string> callback)
{
using (UnityWebRequest www = new UnityWebRequest(url))

View File

@ -34,13 +34,13 @@ public class Outboundequipment : MonoBehaviour
{
}
private async void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Box"))
{
await Shipment(other.gameObject,frame);
}
}
//private async void OnTriggerEnter(Collider other)
//{
// if (other.gameObject.CompareTag("Box"))
// {
// await Shipment(other.gameObject,frame);
// }
//}
/// <summary>
/// 出货
/// </summary>

View File

@ -0,0 +1,154 @@
using DefaultNamespace;
using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static UnityEngine.EventSystems.EventTrigger;
public class Palletizertent : MonoBehaviour
{
/// <summary>
/// 设备id
/// </summary>
public string ID;
/// <summary>
/// 速度
/// </summary>
public float Speed = 3.5f;
[Header("码垛机手臂")]
public GameObject Armobj;
[Header("需要判断位置的箱子")]
public Transform Haveabox;
public void Stacking(Dpmequipment cmequipment)
{
if (cmequipment.TaskNumber != null)
{
if (cmequipment.boxesNumber == "1" && cmequipment.UpperInPlace == "True")
{
Suitcase();
}
else if (cmequipment.boxesNumber == "0" && cmequipment.DownInPlace == "True")
{
Stow();
}
else if(cmequipment.boxesNumber == "0"&&cmequipment.MiddleInPlace == "True")
{
Centreposition();
}
else
{
Debug.Log("没有条件");
}
}
}
/// <summary>
/// 中到位操作
/// </summary>
private void Centreposition()
{
if (Armobj.transform.childCount > 0 && Haveabox.childCount > 0)
{
GameObject box = Armobj.transform.GetChild(0).gameObject;
GameObject box2 = Haveabox.transform.GetChild(0).gameObject;
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<BoxCollider>() != null)
{
BoxCollider box3 = box.GetComponent<BoxCollider>();
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);
}
}
}
}
/// <summary>
/// 提箱操作
/// </summary>
/// <param name="cmequipment"></param>
public void Suitcase()
{
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);
});
}
}
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("提箱子啥也不是");
}
}
/// <summary>
/// 放下箱子操作
/// </summary>
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 if (Armobj.transform.childCount > 0 && Haveabox.childCount > 0)
//{
// GameObject box = Armobj.transform.GetChild(0).gameObject;
// GameObject box2 = Haveabox.transform.GetChild(0).gameObject;
// 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<BoxCollider>() != null)
// {
// BoxCollider box3 = box.GetComponent<BoxCollider>();
// 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);
// }
// }
//}
else
{
Debug.Log("放箱子啥也不是");
}
}
}

View File

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

View File

@ -0,0 +1,112 @@
using DefaultNamespace;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Warehousingdata : MonoBehaviour
{
[Header("设备ID")]
public string ID;
[Header("位移速度")]
public float Speed = 3.5f;
[Header("正传判断点位是否有箱子")]
public Transform Onschedule;
[Header("正转需要位移的点位")]
public Transform Onschedule2;
[Header("反转需要判断点位有箱子")]
public Transform Antipoint1;
[Header("反转需要位移的点位")]
public Transform Antipoint2;
[Header("提升机反转需要位移的点位")]
public Transform Reversing;
[Header("提升机反转需要位移点位2")]
public Transform Reversing2;
void Start()
{
}
public void Equipmentdata(Convoyorequipment convoyorequipment)
{
if (convoyorequipment.TaskNumber != "0")
{
if (convoyorequipment.ForwardRotation == "True")
{
Intotheforword();
}
else if (convoyorequipment.ReverseRotation == "True")
{
Tothereversal();
}
}
}
/// <summary>
/// 正传点位
/// </summary>
public void Intotheforword()
{
if (Onschedule.childCount > 0)
{
GameObject box = Onschedule.transform.GetChild(0).gameObject;
if (box != null)
{
box.transform.SetParent(null);
box.transform.DOMove(Onschedule2.position, (Vector3.Distance(box.transform.position, Onschedule2.transform.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Onschedule2);
});
}
}
}
/// <summary>
/// 反转点位需要判断
/// </summary>
public void Tothereversal()
{
if (Antipoint1.childCount > 0)
{
GameObject box = Antipoint1.transform.GetChild(0).gameObject;
if(box != null)
{
box.transform.SetParent(null);
box.transform.DOMove(Antipoint2.position, (Vector3.Distance(box.transform.position, Antipoint2.transform.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Antipoint2);
});
}
}
else if (GetComponent<Hoistmovement>())
{
Hoistmovement hoistmovement = GetComponent<Hoistmovement>();
if (hoistmovement)
{
if (hoistmovement.Downpoint.transform.childCount > 0 && Reversing)
{
GameObject box = hoistmovement.Downpoint.transform.GetChild(0).gameObject;
if (box)
{
box.transform.SetParent (null);
box.transform.DOMove(Reversing.position, (Vector3.Distance(box.transform.position, Reversing.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Reversing);
});
}
}
else if(hoistmovement.UPpoint.transform.childCount > 0 && Reversing2)
{
GameObject box = hoistmovement.UPpoint.transform.GetChild (0).gameObject;
if (box)
{
box.transform.SetParent (null);
box.transform.DOMove(Reversing2.position, (Vector3.Distance(box.transform.position, Reversing2.position) / Speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
{
box.transform.SetParent(Reversing2);
});
}
}
}
}
}
}

View File

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