Ejemplo n.º 1
0
    private void Start()
    {
        target       = ( VariableGameObject )ScriptableObject.CreateInstance("VariableGameObject");
        target.Value = GameObject.FindGameObjectWithTag("Player");

        // Follow Player
        Node_IsEnemyActive node_IsEnemyActive         = new Node_IsEnemyActive(50, enemyLayermask, transform);
        Invertor           node_IsEnemyActiveInvertor = new Invertor(node_IsEnemyActive);
        Node_Chase         node_Chase = new Node_Chase(2, 100, target, agent, false);

        Sequence sequence_FollowPlayer = new Sequence(new List <BTBaseNode> {
            node_IsEnemyActiveInvertor, node_Chase
        }, "Ninja Sequence: Follow Player");

        // Throw smoke at Guard
        Node_MoveToTransform node_MoveToTransform = new Node_MoveToTransform(GameObject.FindGameObjectWithTag("Cover").transform, agent, 1f);
        Node_ThrowSmoke      node_ThrowSmoke      = new Node_ThrowSmoke(enemyLayermask, 5f, transform, 10f);

        Sequence sequence_ThrowSmoke = new Sequence(new List <BTBaseNode> {
            node_IsEnemyActive, node_MoveToTransform, node_ThrowSmoke
        }, "Throw Smoke");


        tree = new Selector(new List <BTBaseNode> {
            sequence_ThrowSmoke, sequence_FollowPlayer
        });

        if (Application.isEditor)
        {
            gameObject.AddComponent <ShowNodeTreeStatus>().AddConstructor(transform, tree);
        }
    }
Ejemplo n.º 2
0
 public BTSpot(VariableGameObject target, VariableGameObject myAgent, float spotDistance, bool useAngle)
 {
     this.target       = target;
     this.myAgent      = myAgent;
     this.spotDistance = spotDistance;
     this.useAngle     = useAngle;
 }
Ejemplo n.º 3
0
 private void Awake()
 {
     myNavMesh       = Instantiate(myNavMesh);
     myNavMesh.Value = GetComponent <NavMeshAgent>();
     animator        = GetComponentInChildren <Animator>();
     myAgent         = Instantiate(myAgent);
     moveSpeed       = Instantiate(moveSpeed);
 }
    public Node_Chase(float minDistanceToChase, float maxDistanceToChase, VariableGameObject target, NavMeshAgent navAgent, bool loseTarget)
    {
        this.minDistanceToChase = minDistanceToChase;
        this.maxDistanceToChase = maxDistanceToChase;

        this.target     = target;
        this.navAgent   = navAgent;
        this.loseTarget = loseTarget;

        navAgent.stoppingDistance = minDistanceToChase;
    }
    public BTGetClosestHideSpot(List <VariableGameObject> objects, VariableGameObject myAgent, VariableGameObject myTarget, VariableGameObject myEnemy)
    {
        this.objects  = objects;
        this.myAgent  = myAgent;
        this.myTarget = myTarget;
        this.myEnemy  = myEnemy;

        RangeList       = new float[objects.Count];
        sortedRangeList = new float[objects.Count];

        sortedObjects = new List <VariableGameObject>();
    }
Ejemplo n.º 6
0
    private void Awake()
    {
        isArmed.Value      = false;
        engaged.Value      = false;
        agentNavMesh       = Instantiate(agentNavMesh);
        agentNavMesh.Value = GetComponent <NavMeshAgent>();
        animator           = GetComponentInChildren <Animator>();
        myAgent            = Instantiate(myAgent);
        moveSpeed          = Instantiate(moveSpeed);
        targetPlayer.Value = myPlayer;
        targetWeapon.Value = myWeapon;

        myAgent.Value = this.gameObject;

        wayPoint.Value = waypoints[0];
    }
Ejemplo n.º 7
0
    private void Start()
    {
        target          = ( VariableGameObject )ScriptableObject.CreateInstance("VariableGameObject");
        weaponAvailable = ( VariableBool )ScriptableObject.CreateInstance("VariableBool");

        weaponAvailable.Value = false;

        // Patrol Behaviour
        Node_Patrol node_Patrol = new Node_Patrol(waypointsManager, agent);

        Node_TargetVisible node_TargetVisible         = new Node_TargetVisible(agent.transform, target, fov);
        Invertor           node_TargetVisibleInvertor = new Invertor(node_TargetVisible);

        Node_TargetAvailable node_TargetAvailable         = new Node_TargetAvailable(target, active);
        Invertor             node_TargetAvailableInvertor = new Invertor(node_TargetAvailable);

        Sequence sequence_Patrol = new Sequence(new List <BTBaseNode> {
            node_TargetAvailableInvertor, node_Patrol, node_TargetVisibleInvertor
        }, "Guard Sequence: Patrol");

        // Chase & Attack Behaviour
        Node_Bool            node_WeaponAvailable = new Node_Bool(weaponAvailable);
        Node_MoveToTransform node_MoveToTransform = new Node_MoveToTransform(GameObject.FindGameObjectWithTag("Weapon").transform, agent, 2f);             // Again... Not optimal, but it works!
        Node_AcquireWeapon   node_AcquireWeapon   = new Node_AcquireWeapon(GameObject.FindGameObjectWithTag("Weapon").transform, agent, 2f, weaponAvailable);
        Node_Chase           node_Chase           = new Node_Chase(1, 15f, target, agent, true);
        Node_Attack          node_Attack          = new Node_Attack(attackRange.Value, agent, target);

        Sequence sequence_AcquireWeapon = new Sequence(new List <BTBaseNode> {
            node_MoveToTransform, node_AcquireWeapon
        }, "Guard Sequence: Acquire Weapon");
        Selector selector_HasWeapon = new Selector(new List <BTBaseNode> {
            node_WeaponAvailable, sequence_AcquireWeapon
        });
        Sequence sequence_Chase = new Sequence(new List <BTBaseNode> {
            node_TargetAvailable, selector_HasWeapon, node_Chase, node_Attack
        }, "Guard Sequence: Chasing");


        tree = new Selector(new List <BTBaseNode> {
            sequence_Patrol, sequence_Chase
        });

        if (Application.isEditor)
        {
            gameObject.AddComponent <ShowNodeTreeStatus>().AddConstructor(transform, tree);
        }
    }
Ejemplo n.º 8
0
 public Node_TargetVisible(Transform transform, VariableGameObject target, FieldOfView fov)
 {
     this.transform = transform;
     this.target    = target;
     this.fov       = fov;
 }
Ejemplo n.º 9
0
 public BTMove(float speed, VariableNavMeshAgent agent, VariableGameObject goal)
 {
     this.speed = speed;
     this.goal  = goal;
     this.agent = agent;
 }
Ejemplo n.º 10
0
 public BTSetTarget(VariableGameObject target, VariableGameObject newTarget)
 {
     this.target    = target;
     this.newTarget = newTarget;
 }
Ejemplo n.º 11
0
 public Node_Attack(float attackDistance, NavMeshAgent navAgent, VariableGameObject target)
 {
     this.attackDistance = attackDistance;
     this.navAgent       = navAgent;
     this.target         = target;
 }
Ejemplo n.º 12
0
 public BTNextWaypoint(VariableGameObject currentWaypoint, List <GameObject> waypoints)
 {
     this.currentWaypoint = currentWaypoint;
     this.waypoints       = waypoints;
 }
Ejemplo n.º 13
0
 public BTCheckRange(VariableGameObject myAgent, VariableGameObject target, float maxRange)
 {
     this.myAgent  = myAgent;
     this.target   = target;
     this.maxRange = maxRange;
 }
Ejemplo n.º 14
0
    private void Start()
    {
        for (int i = 0; i < hideSpots.transform.childCount; i++)
        {
            VariableGameObject spot = Instantiate(hideSpot);
            spot.Value = hideSpots.transform.GetChild(i).gameObject;
            hideSpotCollection.Add(spot);
        }

        myAgent.Value   = this.gameObject;
        myPlayer.Value  = myPlayerObject;
        Target.Value    = myTarget;
        Enemy.Value     = myEnemy;
        moveSpeed.Value = 0;

        BTBaseNode follow =
            new BTPrioritySelector(
                new BTSequence(
                    new BTSetTarget(Target, myPlayer),
                    new BTCheckRange(myAgent, Target, 5),
                    new BTAnimate(animator, "Run"),
                    new BTMove(2.5f, myNavMesh, Target)
                    ),
                new BTSequence(
                    new BTCheckRange(myAgent, Target, 2),
                    new BTAnimate(animator, "Walk Crouch"),
                    new BTMove(2, myNavMesh, Target)
                    ),
                new BTSequence(
                    new BTAnimate(animator, "Crouch Idle"),
                    new BTStop(myNavMesh)
                    )
                );

        follow._name = "Follow";

        BTBaseNode hide =
            new BTPrioritySelector(
                new BTSequence(
                    new BTCheckBool(Player.inCombat, true),
                    new BTCheckBool(hidden, false),

                    new BTGetClosestHideSpot(hideSpotCollection, myAgent, Target, Enemy),
                    new BTCheckRange(myAgent, Target, 0.5f),

                    new BTAnimate(animator, "Run"),
                    new BTMove(2.5f, myNavMesh, Target)

                    ),
                new BTSequence(
                    new BTCheckBool(Player.inCombat, true),
                    new BTCheckBool(hidden, false),
                    new BTStop(myNavMesh),
                    new BTAnimate(animator, "Crouch Idle"),

                    new BTCheckTaskStatus(
                        new BTWait(3),
                        new BTSetBool(hidden, true)
                        )
                    ),
                new BTSequence(
                    new BTCheckBool(Player.inCombat, true),
                    new BTCheckBool(hidden, true),

                    new BTCheckTaskStatus(
                        new BTSpot(Enemy, myAgent, 200, false),
                        new BTSetBool(hidden, false)
                        ),

                    new BTCheckTaskStatus(
                        new BTCheckBool(Enemy.Value.GetComponent <Guard>().isStunned, false),
                        new BTAnimate(animator, "Throw", "Crouch Idle"),
                        new BTCheckTaskStatus(
                            new BTWait(4),
                            new BTSetBool(Enemy.Value.GetComponent <Guard>().isStunned, true),
                            new BTSetBool(hidden, false)
                            )
                        )
                    )
                );

        hide._name = "Hide";

        tree = new BTPrioritySelector(
            hide,
            follow
            );
        tree._name = "Tree";
    }
Ejemplo n.º 15
0
 public Node_TargetAvailable(VariableGameObject target)
 {
     this.target = target;
 }
Ejemplo n.º 16
0
 public Node_TargetAvailable(VariableGameObject target, VariableBool ownerActive)
 {
     this.target      = target;
     this.ownerActive = ownerActive;
 }