// Update is called once per frame void FixedUpdate() { lps = this.gameObject.GetComponent <ShowEquipState>().equipmentState as LiftPartState; speed = lps.deliverSpeed; direction = lps.deliverDirection; liftPattern = lps.liftPattern; //让该设备上所有的货物都运动 List <GameObject> cargoList = new List <GameObject>(); FindExtension.FindGameObjectsWithTagRecursive(this.gameObject, "Cargo", ref cargoList); if (lps.workState == State.On) { //顶升已经抬升,移动货物到传送带 if (LiftPart.transform.localPosition == TargetPosition2) { if (cargoList.Count > 0) { foreach (GameObject cargo in cargoList) { cargo.transform.localPosition += direction * speed * Time.deltaTime; } } else { liftPattern = LiftPattern.down;//没有货物,顶升开始下降 } } //抬升(入库) if (liftPattern == LiftPattern.up) { //抬升到1 LiftPart.transform.localPosition = Vector3.MoveTowards(LiftPart.transform.localPosition, TargetPosition2, speed * Time.deltaTime); if (LiftPart.transform.localPosition == TargetPosition2) { liftPattern = LiftPattern.off; } } //下降(出库) else if (liftPattern == LiftPattern.down) { LiftPart.transform.localPosition = Vector3.MoveTowards(LiftPart.transform.localPosition, TargetPosition1, speed * Time.deltaTime); if (LiftPart.transform.localPosition == TargetPosition1) { liftPattern = LiftPattern.off; } } } }
// Update is called once per frame void FixedUpdate() { lts = this.gameObject.GetComponent <ShowEquipState>().equipmentState as LiftTransferState; speed = lts.deliverSpeed; direction = lts.deliverDirection; //让该设备上所有的货物都运动 List <GameObject> cargoList = new List <GameObject>(); FindExtension.FindGameObjectsWithTagRecursive(this.gameObject, "Cargo", ref cargoList); if (lts.workState == State.On) { foreach (GameObject cargo in cargoList) { cargo.transform.localPosition += direction * speed * Time.deltaTime; } } }
// Update is called once per frame //控制设备的开启和关闭 void FixedUpdate() { EquipmentState es = equipment.GetComponent <ShowEquipState>().equipmentState; //让该设备上所有的货物都运动 List <GameObject> cargoList = new List <GameObject>(); FindExtension.FindGameObjectsWithTagRecursive(equipment, "Cargo", ref cargoList); //设备坏了,停止工作 if (es.facilityState == FacilityState.Error) { es.workState = State.Off; } //货物过渡 foreach (GameObject cargo in cargoList) { CargoMessage cm = cargo.GetComponent <ShowCargoInfo>().Cargomessage; if (EquipExtension.isCrossTrans(cargo, equipment))//到达过渡位置 { GameObject nextEquip = cm.EquipmentsQueue.ElementAt(2); EquipmentState nextEquipState = new EquipmentState();//有问题 List <GameObject> nextCargoList = new List <GameObject>(); FindExtension.FindGameObjectsWithTagRecursive(equipment, "Cargo", ref nextCargoList); //如果是最后一个传送带设备,关闭当前设备 if (nextEquip == null) { es.workState = State.Off; } else { nextEquipState = nextEquip.GetComponent <ShowEquipState>().equipmentState; } //货物下一个设备是最后一个顶升,这个顶升对它来说是独占设备 if (EquipExtension.isNextLastLiftTransfer(cargo)) { if (nextCargoList.Count > 0)//顶升上有货物 { es.workState = State.Off; } else { nextEquipState.isExcusive = Exclusive.Yes; } } //下一个设备开启 if (nextEquipState.workState == State.On) { if (nextEquipState.isExcusive == Exclusive.Yes)//如果是独占设备,本设备关闭 { es.workState = State.Off; } } //下一个设备关闭 if (nextEquipState.workState == State.Off) { if (nextCargoList.Count == 0)//下一个设备上没有货物,开启下一个设备 { nextEquipState.workState = State.On; } else //下一个设备有货物,关闭本设备 { es.workState = State.Off; } } } } //过渡思路 #region //if (货物到达设备关键点2)//准备过渡 //{ // 拿出下一个设备 // if (下一个设备不存在) // { // 设备=off // } // if(下一个设备On) // { // if (设备只能被单独占用(比如顶升)){ // 设备=off // } else { // 货物继续运动 // } // } // if (下一个设备off && 下一个设备的货物队列 == 0) // { // if (下一个设备 == Normal) // { // 下一个设备=on; // } // } // if(下一个设备off && 下一个设备货物队列 > 0) // { // 本设备=off; // } //} #endregion }