コード例 #1
0
    //public override bool IsAborted()
    //{
    //    return false;
    //}

    public override float GetWeight(Phenix.Unity.AI.WorldState ws)
    {
        if (ws.Get((int)WorldStatePropType.ORDER_ATTACK))
        {
            return(Agent.BlackBoard.GOAPMaxWeightOrderAttack);
        }
        else
        {
            OrderDataAttack order = Agent.PlayerOrder.GetCurOrder() as OrderDataAttack;
            if (order != null)
            {
                ws.Set((int)WorldStatePropType.ORDER_ATTACK, true);
                return(Agent.BlackBoard.GOAPMaxWeightOrderAttack);
            }
        }

        return(0);
    }
コード例 #2
0
ファイル: PlayerInput1.cs プロジェクト: ysguoqiang/samurai
    private void Update()
    {
        if (Input.GetKeyUp(KeyCode.Space))
        {
            OrderDataRoll order = PlayerOrderPool.rolls.Get();
            if (_agent.PlayerOrder.Add(order) == false)
            {
                PlayerOrderPool.rolls.Collect(order);
            }
        }

        if (Input.GetKeyUp(KeyCode.J))
        {
            OrderDataAttack order = PlayerOrderPool.attacks.Get();
            order.attackType = OrderAttackType.X;
            if (_agent.PlayerOrder.Add(order) == false)
            {
                PlayerOrderPool.attacks.Collect(order);
            }
        }

        if (Input.GetKeyUp(KeyCode.K))
        {
            OrderDataAttack order = PlayerOrderPool.attacks.Get();
            order.attackType = OrderAttackType.O;
            if (_agent.PlayerOrder.Add(order) == false)
            {
                PlayerOrderPool.attacks.Collect(order);
            }
        }

        // move的检测必须放在roll和attack之后,否则roll和attack会由于PlayerOrder的_maxCachedOrderCount限制被move挤占掉
        Vector3 moveDir = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

        if (moveDir != Vector3.zero)
        {
            OrderDataMove order = PlayerOrderPool.moves.Get();
            order.dir = moveDir;
            if (_agent.PlayerOrder.Add(order) == false)
            {
                PlayerOrderPool.moves.Collect(order);
            }
        }
    }