Ejemplo n.º 1
0
    public void CreateOrderUse()
    {
        if (Agent.BlackBoard.IsOrderAddPossible(AgentOrder.E_OrderType.E_USE) == false)
        {
            return;
        }

        InteractionGameObject onObject = MissionZone.Instance.CurrentGameZone.GetNearestInteractionObject(Agent.Position, 2);

        if (onObject == null)
        {
            return;
        }

        if (onObject is InteractionLever)
        {
            InteractionLever lever = onObject as InteractionLever;
            if (lever.State != InteractionLever.E_State.E_OFF && lever.State != InteractionLever.E_State.E_OFF)
            {
                return;
            }

            AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_USE);
            order.InteractionObject = onObject;
            order.Position          = order.InteractionObject.GetEntryTransform().position;
            order.Interaction       = E_InteractionType.On;
            Agent.BlackBoard.AddOrder(order);

            return;
        }

        ComboProgress.Clear();
        ClearBufferedOrder();
        //GuiManager.Instance.ShowComboProgress(ComboProgress);
    }
Ejemplo n.º 2
0
    private void CreateOrderDodge()
    {
        if (Owner.BlackBoard.IsOrderAddPossible(AgentOrder.E_OrderType.E_DODGE) == false)
        {
            return;
        }

        Vector3 rollDir;

        if (InputDirection != Vector3.zero) //Controls.Joystick.Direction != Vector3.zero)
        {
            rollDir = InputDirection;       // Controls.Joystick.Direction;
        }
        else
        {
            rollDir = Owner.Forward;
        }

        rollDir.Normalize();

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_DODGE);

        order.Direction = rollDir;


        Owner.BlackBoard.OrderAdd(order);

        ComboProgress.Clear();
        ClearBufferedOrder();
        GuiManager.Instance.ShowComboProgress(ComboProgress);
    }
Ejemplo n.º 3
0
    private void CreateOrderDodge()
    {
        if (Agent.BlackBoard.IsOrderAddPossible(AgentOrder.E_OrderType.E_DODGE) == false)
        {
            return;
        }

        Vector3 rollDir;

        if (MoveDirection != Vector3.zero)
        {
            rollDir = MoveDirection;
        }
        else
        {
            rollDir = Agent.Forward;
        }

        rollDir.Normalize();

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_DODGE);

        order.Direction = rollDir;


        Agent.BlackBoard.AddOrder(order);

        ComboProgress.Clear();
        ClearBufferedOrder();
        //GuiManager.Instance.ShowComboProgress(ComboProgress);
    }
Ejemplo n.º 4
0
    private void CreateOrderMove(Vector3 direction)
    {
        if (CouldAddnewOrder() == false)
        {
            //  Debug.Log("不能添加动作");
            return;
        }

        if (lastDir != null)
        {
            direction = (direction + lastDir).normalized;
            lastDir   = direction;
        }

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO);

        order.Direction         = direction;
        order.MoveSpeedModifier = moveSpeed;
        Owner.BlackBoard.OrderAdd(order);
        Owner.BlackBoard.DesiredDirection = direction;

        ActionMove actionMove = ActionFactory.Create(ActionFactory.E_Type.E_MOVE) as ActionMove;

        GetComponent <AnimComponent>().HandleAction(actionMove);
    }
Ejemplo n.º 5
0
    private void CreateOrderAttack(E_AttackType type)
    {
        if (CouldBufferNewOrder() == false && CouldAddnewOrder() == false)
        {
            return;
        }

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_ATTACK);

        if (MoveDirection != Vector3.zero)
        {
            order.Direction = MoveDirection;
        }
        else
        {
            order.Direction = Transform.forward;
        }


        order.AnimAttackData = ProcessCombo(type);

        order.Target = MissionZone.Instance.GetBestTarget(Agent, LastAttacketTarget);;

        if (CouldAddnewOrder())
        {
            Agent.BlackBoard.AddOrder(order);
        }
        else
        {
            BufferedOrders.Enqueue(order);
        }
    }
Ejemplo n.º 6
0
    private void CreateOrderAttack(E_AttackType type)
    {
        if (CouldBufferNewOrder() == false && CouldAddnewOrder() == false)
        {
            //Debug.Log(Time.timeSinceLevelLoad + " attack order rejected, already buffered one ");
            return;
        }

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_ATTACK);

        if (InputDirection != Vector3.zero)   //Controls.Joystick.Direction != Vector3.zero)
        {
            order.Direction = InputDirection; //Controls.Joystick.Direction;
        }
        else
        {
            order.Direction = Transform.forward;
        }


        order.AnimAttackData = ProcessCombo(type);

        order.Target = GetBestTarget(false);

        if (CouldAddnewOrder())
        {
            //Debug.Log("order " + (order.Target != null ? order.Target.name : "no target") + " " + order.AnimAttackData.AnimName);
            Owner.BlackBoard.OrderAdd(order);
        }
        else
        {
            //Debug.Log("order to queue " + (order.Target != null ? order.Target.name : "no target") + " " + order.AnimAttackData.AnimName);
            BufferedOrders.Enqueue(order);
        }
    }
Ejemplo n.º 7
0
    public void OnTriggerEnter(Collider other)
    {
        TriggerObject interaction = other.GetComponent <TriggerObject>();

        if (interaction != null)
        {
            if (interaction.GetEntryTransform() == null)
            {
                return;
            }

            //  当玩家碰到触发器,播放使用动画
            Owner.transform.position = interaction.GetEntryTransform().position;
            Owner.transform.rotation = interaction.GetEntryTransform().rotation;

            useMode = false;

            AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_USE);

            order.InteractionObject = interaction;
            order.Position          = order.InteractionObject.GetEntryTransform().position;
            order.Interaction       = E_InteractionType.On;
            Owner.BlackBoard.OrderAdd(order);

            ActionUseLever actionUseLever = ActionFactory.Create(ActionFactory.E_Type.E_USE_LEVER) as ActionUseLever;
            actionUseLever.InterObj    = interaction;
            actionUseLever.Interaction = E_InteractionType.On;

            GetComponent <AnimComponent>().HandleAction(actionUseLever);

            return;
        }
    }
Ejemplo n.º 8
0
    private void CreateOrderStop()
    {
        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_STOPMOVE);

        Owner.BlackBoard.OrderAdd(order);

        GetComponent <AnimComponent>().HandleAction(ActionFactory.Create(ActionFactory.E_Type.E_IDLE));
    }
Ejemplo n.º 9
0
    void CreateOrderGoTo(Vector3 _moveDirection)
    {
        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO);

        order.Direction         = _moveDirection;
        order.Position          = Agent.Position;
        order.MoveSpeedModifier = 1.0f;
        Agent.BlackBoard.AddOrder(order);
    }
Ejemplo n.º 10
0
    void CreateOrderAttack(E_AttackType type)
    {
        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_ATTACK);

        order.AttackType = type;
        //todo ... 移动方向或者正前方
        order.Direction = Transform.forward;
        //todo ... 攻击动画信息
        order.AnimAttackData = null;
        //todo ... 获取当前最佳攻击对象
        order.Target = null;
        //todo ... 根据条件添加
        Agent.BlackBoard.AddOrder(order);
    }
Ejemplo n.º 11
0
    void OnTriggerEnter(Collider other)
    {
        InteractionTrigger interaction = other.GetComponent <InteractionTrigger>();

        if (interaction != null)
        {
            AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_USE);
            order.InteractionObject = interaction;
            order.Position          = order.InteractionObject.GetEntryTransform().position;
            order.Interaction       = E_InteractionType.On;
            Owner.BlackBoard.OrderAdd(order);
            return;
        }
    }
Ejemplo n.º 12
0
    private void CreateOrderGoTo()
    {
        if (CouldAddnewOrder() == false)
        {
            return;
        }

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO);

        order.Direction         = Controls.Joystick.Direction;
        order.MoveSpeedModifier = Controls.Joystick.Force;

        Owner.BlackBoard.OrderAdd(order);
    }
Ejemplo n.º 13
0
    private void CreateOrderGoTo(Vector3 dir, float force)
    {
        if (CouldAddnewOrder() == false)
        {
            return;
        }

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO);

        order.Direction         = dir;
        order.MoveSpeedModifier = force;

        Agent.BlackBoard.AddOrder(order);
    }
Ejemplo n.º 14
0
    private void CreateOrderGoTo()
    {
        if (CouldAddnewOrder() == false)
        {
            return;
        }

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO);

        Owner.BlackBoard.CameraDirection = CameraBehaviour.Instance.lookAt;
        order.Direction         = InputDirection; // Controls.Joystick.Direction;
        order.MoveSpeedModifier = 0.6f;           //Controls.Joystick.Force;
        //Debug.Log("order.MoveSpeedModifier=" + order.MoveSpeedModifier);
        Owner.BlackBoard.OrderAdd(order);
    }
Ejemplo n.º 15
0
    void CreateOrderGoto(Vector3 _moveDirection)
    {
        //		Agent.BlackBoard.DesiredDirection = _moveDirection;
        //		Agent.BlackBoard.DesiredPosition = Agent.Position;
        //		AgentAction _action = AgentActionFactory.Create(AgentActionFactory.E_Type.E_Move);
        //		Agent.BlackBoard.AddAction(_action);

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO);

        order.Direction         = _moveDirection;
        order.MoveSpeedModifier = 1;
        order.Position          = Agent.Position;

        Agent.BlackBoard.AddOrder(order);
    }
Ejemplo n.º 16
0
    //  闪避动作
    private void CreateOrderDodge()
    {
        if (Owner.BlackBoard.IsOrderAddPossible(AgentOrder.E_OrderType.E_DODGE) == false)
        {
            return;
        }

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_DODGE);

        order.Direction = Owner.Transform.forward;
        Owner.BlackBoard.OrderAdd(order);

        GetComponent <AnimComponent>().HandleAction(ActionFactory.Create(ActionFactory.E_Type.E_ROLL) as ActionRoll);

        //  清空连招
        comboProgress.Clear();
        ClearBufferedOrder();

        //  清空画面显示
        MainPanelCtrl.Instance.ComboProgressMessage(comboProgress);
    }
Ejemplo n.º 17
0
    //  攻击动作
    private void CreateOrderAttack(E_AttackType type)
    {
        if (CouldBufferNewOrder() == false && CouldAddnewOrder() == false)
        {
            //  Debug.Log(Time.timeSinceLevelLoad + " attack order rejected, already buffered one ");
            return;
        }

        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_ATTACK);

        order.Direction      = Owner.Transform.forward;
        order.AnimAttackData = ProcessCombo(type);

        //  查找最优的目标对象
        order.Target = GetBestTarget(false);

        if (CouldAddnewOrder())
        {
            //Debug.Log("order " + (order.Target != null ? order.Target.name : "no target") + " " + order.AnimAttackData.AnimName);
            Owner.BlackBoard.OrderAdd(order);
        }
        else
        {
            //Debug.Log("order to queue " + (order.Target != null ? order.Target.name : "no target") + " " + order.AnimAttackData.AnimName);
            bufferedOrders.Enqueue(order);
        }

        ActionAttack attack = ActionFactory.Create(ActionFactory.E_Type.E_ATTACK) as ActionAttack;

        attack.Data                  = order.AnimAttackData;
        attack.AttackDir             = Owner.Transform.forward;
        attack.Target                = order.Target;
        Owner.BlackBoard.WeaponState = E_WeaponState.Ready;

        //  currentAttackAction = attack;
        weaponStartTime = 0;
        GetComponent <AnimComponent>().HandleAction(attack);
    }
Ejemplo n.º 18
0
    private void CreateOrderStop()
    {
        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_STOPMOVE);

        Owner.BlackBoard.OrderAdd(order);
    }
Ejemplo n.º 19
0
    void CreateOrderStop()
    {
        AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_STOPMOVE);

        Agent.BlackBoard.AddOrder(order);
    }