Exemple #1
0
 public ShootAction(NPCSoldier npc, BlackBoard blackBoard, string key) : base(npc)
 {
     board    = blackBoard;
     this.key = key;
     shootPos = new Vector3(0, 0.8f, 0);
 }
Exemple #2
0
 public ActionNode(NPCSoldier npcSoldier)
 {
     soldier = npcSoldier;
 }
Exemple #3
0
    private void Start()
    {
        player = GameObject.FindGameObjectWithTag(Tags.Player).GetComponent <UserSoldier>();

        gameManager  = GameObject.FindGameObjectWithTag(Tags.GameController).GetComponent <GameManager>();
        npc          = GetComponent <NPCSoldier>();
        npc.Damaged += Damaged;
        nextRadius   = gameManager.nextRadius;
        SetCoverPos(transform.position);

        var notInSafeZoneCond = new ConditionNode(IsInSafeZone, false);
        var haveEnemyCond     = new ConditionNode(HaveEnemyInSight, true);
        var beingShootCond    = new ConditionNode(BeingShoot, true);
        var haveWeaponCond    = new ConditionNode(HaveWeapon, true);
        var seekWeaponCond    = new ConditionNode(SeekWeapon, true);

        var equipAction         = new SetEquipmentAction(npc, true);
        var notEquipAction      = new SetEquipmentAction(npc, false);
        var crouchAction        = new SetCrouchAction(npc, true);
        var notCrouchAction     = new SetCrouchAction(npc, false);
        var toSafeZoneAction    = new MoveAction(npc, blackBoard, safeZoneKey);
        var goCoverAction       = new MoveAction(npc, blackBoard, coverPosKey);
        var FallBackAction      = new MoveAction(npc, blackBoard, fallBackPosKey);
        var goWeaponAction      = new MoveAction(npc, blackBoard, weaponPosKey);
        var pickUpWeaponAction  = new PickUpWeaponAction(npc, blackBoard, weaponKey);
        var shootAction         = new ShootAction(npc, blackBoard, enemyPosKey);
        var turnToShooterAction = new TurnAction(npc, blackBoard, shooterPosKey);
        var idleAction          = new IdleAction(npc);

        var combat = new SequenceNode();

        combat.AddCondition(haveWeaponCond);
        combat.AddNode(equipAction);
        combat.AddNode(shootAction);

        var fallBack = new SequenceNode();

        fallBack.AddNode(FallBackAction);

        haveEnemy = new SelectionNode();
        haveEnemy.AddCondition(haveEnemyCond);
        haveEnemy.AddNode(combat);
        haveEnemy.AddNode(fallBack);

        var counter = new SequenceNode();

        counter.AddCondition(haveWeaponCond);
        counter.AddNode(turnToShooterAction);

        beingShoot = new SelectionNode();
        beingShoot.AddCondition(beingShootCond);
        beingShoot.AddNode(counter);
        beingShoot.AddNode(fallBack);

        toSafeZone = new SequenceNode();
        toSafeZone.AddCondition(notInSafeZoneCond);
        toSafeZone.AddNode(notCrouchAction);
        toSafeZone.AddNode(notEquipAction);
        toSafeZone.AddNode(toSafeZoneAction);

        stayInCover = new SequenceNode();
        stayInCover.AddCondition(haveWeaponCond);
        stayInCover.AddNode(goCoverAction);
        stayInCover.AddNode(crouchAction);
        stayInCover.AddNode(idleAction);

        seekWeapon = new SequenceNode();
        seekWeapon.AddCondition(seekWeaponCond);
        seekWeapon.AddNode(goWeaponAction);
        seekWeapon.AddNode(pickUpWeaponAction);

        idle = new SelectionNode();
        idle.AddNode(stayInCover);
        idle.AddNode(seekWeapon);

        root.AddNode(haveEnemy);
        root.AddNode(beingShoot);
        root.AddNode(toSafeZone);
        root.AddNode(idle);
    }
 public PickUpWeaponAction(NPCSoldier npcSoldier, BlackBoard blackBoard, string key) : base(npcSoldier)
 {
     board    = blackBoard;
     this.key = key;
 }
Exemple #5
0
 public IdleAction(NPCSoldier npc) : base(npc)
 {
 }
Exemple #6
0
 public TurnAction(NPCSoldier npcControl, BlackBoard blackBoard, string key) : base(npcControl)
 {
     board    = blackBoard;
     this.key = key;
 }
Exemple #7
0
 public MoveAction(NPCSoldier npc, BlackBoard blackBoard, string key) : base(npc)
 {
     board    = blackBoard;
     this.key = key;
 }
 public SetEquipmentAction(NPCSoldier npc, bool equip) : base(npc)
 {
     this.equip = equip;
 }
 public SetCrouchAction(NPCSoldier npc, bool target) : base(npc)
 {
     this.target = target;
 }