Пример #1
0
    new void Start()
    {
        playerTransform = GameObject.FindGameObjectWithTag("Player").transform;

        var patrolState = new BasePatrolState(this);

        ChasePlayerStateModel chasePlayerStateModel = new ChasePlayerStateModel
        {
            playerTransform = playerTransform
        };
        var chasePlayerState = new ChasePlayerState(this, chasePlayerStateModel);

        AttackStateModel attackStateModel = new AttackStateModel
        {
            transform      = swordAttackPosition,
            range          = attackRange,
            delay          = attackDelay,
            damage         = attackDamage,
            onAttackStrike = onAttackStrike,
            attackSound    = attackSound
        };

        var attackState = new BaseAttackState(this, attackStateModel);

        stateMachine.AddTransition(patrolState, chasePlayerState, PlayerInAggroRange);
        stateMachine.AddAnyTransition(attackState, PlayerInAttackRange);
        stateMachine.AddAnyTransition(patrolState, () => !PlayerInAggroRange());
        stateMachine.AddTransition(attackState, chasePlayerState, () => !PlayerInAttackRange());

        stateMachine.SetState(patrolState);
    }
Пример #2
0
 public BaseAttackState(BaseAI baseAI, AttackStateModel model)
 {
     this.baseAI = baseAI;
     this.model  = model;
 }