yct 5 năm trước cách đây
mục cha
commit
69597b1d01

+ 9 - 128
Assets/Scenes/SampleScene.unity

@@ -589,7 +589,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 245376923}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 11.6, y: 18, z: -2.9}
+  m_LocalPosition: {x: -5.62, y: 3.1, z: -2.9}
   m_LocalScale: {x: 2.5, y: 0.1, z: 5}
   m_Children: []
   m_Father: {fileID: 0}
@@ -2331,7 +2331,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 919999058}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: -4.3799996, y: 0.25, z: -2.73}
+  m_LocalPosition: {x: -4.3799996, y: 3, z: -2.73}
   m_LocalScale: {x: 6, y: 0.2, z: 5}
   m_Children: []
   m_Father: {fileID: 0}
@@ -2509,7 +2509,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 976621546}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 3.55, y: 12, z: -2.9}
+  m_LocalPosition: {x: 25.18, y: 3.1, z: -2.9}
   m_LocalScale: {x: 2.5, y: 0.1, z: 5}
   m_Children: []
   m_Father: {fileID: 0}
@@ -2810,8 +2810,8 @@ GameObject:
   - component: {fileID: 1079945403}
   - component: {fileID: 1079945407}
   m_Layer: 0
-  m_Name: transferV4
-  m_TagString: transfer
+  m_Name: scanBoard
+  m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
@@ -2846,7 +2846,7 @@ MeshRenderer:
   m_RenderingLayerMask: 1
   m_RendererPriority: 0
   m_Materials:
-  - {fileID: 2100000, guid: 5ec9e36ef8c9d94499e87d7c51166add, type: 2}
+  - {fileID: 2100000, guid: a72de979333197e4683b3bb943ac5780, type: 2}
   m_StaticBatchInfo:
     firstSubMesh: 0
     subMeshCount: 0
@@ -2882,7 +2882,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1079945402}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 17.48, y: 27, z: -2.9}
+  m_LocalPosition: {x: 17.48, y: 3, z: -2.9}
   m_LocalScale: {x: 2.5, y: 0.1, z: 5}
   m_Children: []
   m_Father: {fileID: 0}
@@ -3135,6 +3135,7 @@ MonoBehaviour:
   carModel: {fileID: 2078527856}
   transferVehicles: []
   state: 0
+  ready: 0
   termState: 000000000000000000000000000000000000000000000000
 --- !u!4 &1248564964
 Transform:
@@ -4831,126 +4832,6 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 37
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1934883470
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1934883474}
-  - component: {fileID: 1934883473}
-  - component: {fileID: 1934883472}
-  - component: {fileID: 1934883471}
-  - component: {fileID: 1934883475}
-  m_Layer: 0
-  m_Name: transferV5
-  m_TagString: transfer
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!65 &1934883471
-BoxCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1934883470}
-  m_Material: {fileID: 0}
-  m_IsTrigger: 0
-  m_Enabled: 1
-  serializedVersion: 2
-  m_Size: {x: 1, y: 1, z: 1}
-  m_Center: {x: 0, y: 0, z: 0}
---- !u!23 &1934883472
-MeshRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1934883470}
-  m_Enabled: 1
-  m_CastShadows: 1
-  m_ReceiveShadows: 1
-  m_DynamicOccludee: 1
-  m_MotionVectors: 1
-  m_LightProbeUsage: 1
-  m_ReflectionProbeUsage: 1
-  m_RenderingLayerMask: 1
-  m_RendererPriority: 0
-  m_Materials:
-  - {fileID: 2100000, guid: 5ec9e36ef8c9d94499e87d7c51166add, type: 2}
-  m_StaticBatchInfo:
-    firstSubMesh: 0
-    subMeshCount: 0
-  m_StaticBatchRoot: {fileID: 0}
-  m_ProbeAnchor: {fileID: 0}
-  m_LightProbeVolumeOverride: {fileID: 0}
-  m_ScaleInLightmap: 1
-  m_PreserveUVs: 0
-  m_IgnoreNormalsForChartDetection: 0
-  m_ImportantGI: 0
-  m_StitchLightmapSeams: 0
-  m_SelectedEditorRenderState: 3
-  m_MinimumChartSize: 4
-  m_AutoUVMaxDistance: 0.5
-  m_AutoUVMaxAngle: 89
-  m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
-  m_SortingOrder: 0
---- !u!33 &1934883473
-MeshFilter:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1934883470}
-  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
---- !u!4 &1934883474
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1934883470}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 1.95, y: 30, z: -2.9}
-  m_LocalScale: {x: 2.5, y: 0.1, z: 5}
-  m_Children: []
-  m_Father: {fileID: 0}
-  m_RootOrder: 61
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1934883475
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1934883470}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 37b335c8adb2cdf4da102f1b07f8edfc, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  left_elevator: {fileID: 2106410586}
-  right_elevator: {fileID: 919999058}
-  machineArm: {fileID: 2007780444}
-  controller: {fileID: 1248564962}
-  cmd: 0
-  targetFloor: 0
-  targetX: 0
-  xSpeed: 0
-  zSpeed: 0
-  mainZ: 0
-  spaceZ: 0
-  load: {fileID: 0}
-  state: 0
-  currPos: {x: 0, y: 0, z: 0}
-  waitForElevator: 0
-  oneDirection: 0
 --- !u!1 &1962423104
 GameObject:
   m_ObjectHideFlags: 0
@@ -5553,7 +5434,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 2106410586}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 26.64, y: 0.25, z: -2.73}
+  m_LocalPosition: {x: 26.64, y: 3, z: -2.73}
   m_LocalScale: {x: 6, y: 0.2, z: 5}
   m_Children: []
   m_Father: {fileID: 0}

+ 77 - 0
Assets/Scenes/scanBoard.mat

@@ -0,0 +1,77 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: scanBoard
+  m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: 
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _UVSec: 0
+    - _ZWrite: 1
+    m_Colors:
+    - _Color: {r: 0.81948185, g: 0.4575472, b: 1, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

+ 8 - 0
Assets/Scenes/scanBoard.mat.meta

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

+ 77 - 72
Assets/controller.cs

@@ -10,10 +10,11 @@ public class controller : MonoBehaviour
     public GameObject carModel;
     public GameObject[] transferVehicles;
     /// <summary>
-    /// 0 idle, 1 park arm, 2 park trans get car, 3 park trans put car inside cmd=2, 
+    /// 0 idle, 1 停车机械手抓车, 2 停车右电梯送出中跑车接车, 3 停车左电梯送中跑车上楼并送车,cmd=2, 4 停车
     /// 4 fetch trans get car cmd=3, 5 fetch trans go downstairs, 6 fetch arm get car cmd=4, 7 fetch trans go back
     /// </summary>
     public int state;
+    public bool ready;
 
     /// <summary>
     /// 假设123停车,456取车
@@ -80,6 +81,58 @@ public class controller : MonoBehaviour
         return null;
     }
 
+    // Start is called before the first frame update
+    void Start()
+    {
+        Random.InitState((int)(Time.time*1000.0f));
+        transferVehicles = GameObject.FindGameObjectsWithTag("transfer");
+        if (transferVehicles.Length != 3 || machineArm == null || elevator_left == null || elevator_right == null || carModel == null)
+        {
+            initialized = false;
+            Debug.Log("初始化失败");
+            return;
+        }
+        else
+        {
+            //termState = new int[6];
+            //currTermVar = new int[6];
+            ready = false;
+            usingTrans = null;
+            state = 0;
+            prevTime = Time.time;
+            movingCars = new List<CarInfo>();
+            initialized = true;
+            currIndex = 0;
+            //// 中跑车排序
+            //int floor = 13;
+            //int index = -1;
+            //for (int i = 0; i < transferVehicles.Length; i++)
+            //{
+            //    for (int j = i; j < transferVehicles.Length; j++)
+            //    {
+            //        if (transferVehicles[j].GetComponent<transferBehavior>().GetFloor() < floor)
+            //        {
+            //            floor = transferVehicles[j].GetComponent<transferBehavior>().GetFloor();
+            //            index = j;
+            //        }
+            //    }
+            //    GameObject temp = transferVehicles[i];
+            //    transferVehicles[i] = transferVehicles[index];
+            //    transferVehicles[index] = temp;
+            //    floor = 13;
+            //    index = -1;
+            //}
+
+            // object reference test
+            //GameObject temp = CreateCar(new Vector3(5, 5, 5));
+            //AddToGarage(temp, 2, 2);
+            //test = temp;
+            //temp = null;
+            //DestroyCar(test);
+            //Debug.Log("完成");
+        }
+    }
+
     // 根据楼层选择中跑车编号
     public int GetSpecificTrans(int floor)
     {
@@ -111,7 +164,13 @@ public class controller : MonoBehaviour
 
     }
 
+    void UpdateTrans()
+    {
+
+    }
+
     // 模拟PLC读取终端指令
+
     void UpdateCmd()
     {
         //Debug.Log("currIndex: "+currIndex +", state: "+currTermVar[currIndex]);
@@ -166,17 +225,12 @@ public class controller : MonoBehaviour
                     state = 4;
                 }
                 break;
-            // 停车
+            // 停车控制机械手抓车
             case 1:
                 if (machineArm.GetComponent<machineArmBehavior>().state == 23)
                 {
                     state = 2;
                 }
-                //if(machineArm.GetComponent<machineArmBehavior>().state == 14)
-                //{
-                //    machineArm.GetComponent<machineArmBehavior>().state = 24;
-                //    state = 2;
-                //}
                 if (machineArm.GetComponent<machineArmBehavior>().state == 0 && machineArm.GetComponent<machineArmBehavior>().terminalIndex == -1)
                 {
                     machineArm.GetComponent<machineArmBehavior>().terminalIndex = currIndex + 1;
@@ -356,55 +410,6 @@ public class controller : MonoBehaviour
         }
     }
 
-    // Start is called before the first frame update
-    void Start()
-    {
-        Random.InitState((int)(Time.time*1000.0f));
-        transferVehicles = GameObject.FindGameObjectsWithTag("transfer");
-        if (transferVehicles.Length != 5 || machineArm == null || elevator_left == null || elevator_right == null || carModel == null)
-        {
-            initialized = false;
-            Debug.Log("初始化失败");
-            return;
-        }
-        else
-        {
-            //termState = new int[6];
-            //currTermVar = new int[6];
-            usingTrans = null;
-            state = 0;
-            prevTime = Time.time;
-            movingCars = new List<CarInfo>();
-            initialized = true;
-            currIndex = 0;
-            // 中跑车排序
-            int floor = 13;
-            int index = -1;
-            for (int i = 0; i < transferVehicles.Length; i++)
-            {
-                for (int j = i; j < transferVehicles.Length; j++)
-                {
-                    if (transferVehicles[j].GetComponent<transferBehavior>().GetFloor() < floor)
-                    {
-                        floor = transferVehicles[j].GetComponent<transferBehavior>().GetFloor();
-                        index = j;
-                    }
-                }
-                GameObject temp = transferVehicles[i];
-                transferVehicles[i] = transferVehicles[index];
-                transferVehicles[index] = temp;
-                floor = 13;
-                index = -1;
-            }
-            // object reference test
-            //GameObject temp = CreateCar(new Vector3(5, 5, 5));
-            //AddToGarage(temp, 2, 2);
-            //test = temp;
-            //temp = null;
-            //DestroyCar(test);
-            //Debug.Log("完成");
-        }
-    }
 
     // Update is called once per frame
     void Update()
@@ -416,23 +421,23 @@ public class controller : MonoBehaviour
                 movingCars = new List<CarInfo>();
             }
 
-            //控制频率,30s生成停取指令
-            if ((Time.time - prevTime) > cmdInterval)
-            {
-                //elevator_left.GetComponent<elevatorBehavior>().targetFloor = Random.Range(1, 5);
-                int termRndNum = Mathf.FloorToInt(Random.value * 6);
-                //Debug.Log(termRndNum);
-                if (termState[termRndNum] == 0)
-                {
-                    //if (termRndNum > 2 && movingCars.Count > 0)
-                    //    termState[termRndNum] = 2;
-                    if (termRndNum <= 2)
-                        termState[termRndNum] = 1;
-                }
-                prevTime = Time.time;
-            }
+            ////控制频率,30s生成停取指令
+            //if ((Time.time - prevTime) > cmdInterval)
+            //{
+            //    //elevator_left.GetComponent<elevatorBehavior>().targetFloor = Random.Range(1, 5);
+            //    int termRndNum = Mathf.FloorToInt(Random.value * 6);
+            //    //Debug.Log(termRndNum);
+            //    if (termState[termRndNum] == 0)
+            //    {
+            //        //if (termRndNum > 2 && movingCars.Count > 0)
+            //        //    termState[termRndNum] = 2;
+            //        if (termRndNum <= 2)
+            //            termState[termRndNum] = 1;
+            //    }
+            //    prevTime = Time.time;
+            //}
 
-            BasicStateMachine();
+            //BasicStateMachine();
         }
     }
 }

+ 1 - 1
Assets/transferBehavior.cs

@@ -39,7 +39,7 @@ public class transferBehavior : MonoBehaviour
         targetX = -1;
         state = 0;
         waitForElevator = false;
-        oneDirection = false;
+        oneDirection = true;
         currPos = GetComponent<Transform>().position;
         currElevatorLeft = true;
         load = null;