Esempio n. 1
0
        /// <summary>
        /// 设置武器Transform
        /// </summary>
        public void SetWeaponTransform(Transform weaponTransform)
        {
            this.weaponTransform = weaponTransform;
            hasWeaponIncoming    = false;
            UpdateSprite();

            if (weaponTransform != null)
            {
                TransporterTask.TakeWeaponFromSlotToPosition task = new TransporterTask.TakeWeaponFromSlotToPosition
                {
                    weaponPosition = GetPosition(),
                    targetPosition = GetPosition() + new Vector3(-50, 0),
                    grabWeapon     = (WorkerTransporterTaskAI taskAI) =>
                    {
                        Debug.Log(weaponTransform.name);
                        Debug.Log(taskAI.transform.name);
                        this.weaponTransform.SetParent(taskAI.transform);
                        weaponTransform.parent = taskAI.transform;
                        SetWeaponTransform(null);
                    },
                    dropWeapon = () =>
                    {
                        weaponTransform.SetParent(null);
                    }
                };
                transporterTask.AddTask(task);
            }
        }
            public void SetWeaponTransform(Transform weaponTransform)
            {
                this.weaponTransform = weaponTransform;
                hasWeaponIncoming    = false;
                UpdateSprite();

                if (weaponTransform != null)
                {
                    TransporterTask.TakeWeaponFromSlotToPosition task = new TransporterTask.TakeWeaponFromSlotToPosition {
                        weaponSlotPosition = GetPosition(),
                        targetPosition     = new Vector3(600, 500),
                        grabWeapon         = (CM_WorkerTransporterTaskAI weaponWorkerTaskAI) => {
                            // Grab weapon, parent the weapon to the worker
                            weaponTransform.SetParent(weaponWorkerTaskAI.transform);
                            SetWeaponTransform(null);
                        },
                        dropWeapon = () => {
                            // Drop weapon, set parent back to null
                            weaponTransform.SetParent(null);
                        },
                    };
                    transporterTaskSystem.AddTask(task);
                }

                /*FunctionTimer.Create(() => {
                 *  if (weaponTransform != null) {
                 *      Destroy(weaponTransform.gameObject);
                 *      SetWeaponTransform(null);
                 *  }
                 * }, 4f);*/
            }
 private void ExecuteTask_TaskWeaponToWeaponSlot(TransporterTask.TakeWeaponFromSlotToPosition task)
 {
     worker.MoveTo(task.weaponPosition, () =>
     {
         task.grabWeapon(this);
         worker.MoveTo(task.targetPosition, () =>
         {
             task.dropWeapon();
             state = State.WaitingForNextTask;
         });
     });
 }