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); }
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); }
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); }
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); }
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); } }
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); } }
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; } }
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)); }
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); }
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); }
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; } }
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); }
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); }
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); }
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); }
// 闪避动作 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); }
// 攻击动作 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); }
private void CreateOrderStop() { AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_STOPMOVE); Owner.BlackBoard.OrderAdd(order); }
void CreateOrderStop() { AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_STOPMOVE); Agent.BlackBoard.AddOrder(order); }