Ejemplo n.º 1
0
    private void Start()
    {
        //TODO: Create your Behaviour tree here
        target       = (VariableTransform)ScriptableObject.CreateInstance("VariableTransform"); //(VariableType<Transform>)ScriptableObject.CreateInstance(VariableType<Transform>);
        target.Value = GameObject.FindWithTag("Player").transform;

        NodeEnemyIsAggro nodeEnemyIsAggro = new NodeEnemyIsAggro(10, enemyLayerMask, transform);
        //Invertor invertorNodeEnemyIsAggro = new Invertor(nodeEnemyIsAggro);
        NodeChase nodeChase = new NodeChase(2, 5, target, agent, 5f, false);

        Sequence sequenceFollow = new Sequence(nodeChase);

        NodeGoToTransform    nodeGoToTransform    = new NodeGoToTransform(0.5f, GameObject.FindWithTag("HidingSpot").transform, agent);
        NodeTrowSmokeAtEnemy nodeTrowSmokeAtEnemy = new NodeTrowSmokeAtEnemy(1f, enemyLayerMask, 10, transform);
        //Invertor invertorNodeTrowSmokeAtEnemy = new Invertor(nodeTrowSmokeAtEnemy);

        Sequence sequenceSmoking = new Sequence(nodeEnemyIsAggro, nodeGoToTransform, nodeTrowSmokeAtEnemy);

        tree = new Selector(new List <Node> {
            sequenceSmoking, sequenceFollow
        });

        // Show NodeState in editor
        if (Application.isEditor)
        {
            gameObject.AddComponent <ShowNodeTreeStatus>().AddConstructor(transform, tree);
        }
    }
Ejemplo n.º 2
0
    private void Start()
    {
        target          = (VariableTransform)ScriptableObject.CreateInstance("VariableTransform");
        hasWeapon       = (VariableBool)ScriptableObject.CreateInstance("VariableBool");
        hasWeapon.Value = false;

        //Create your Behaviour Tree here!
        #region patrolling
        // Create target that can be changed by other nodes
        NodePatrol    nodePatrol            = new NodePatrol(0.5f, patrolPoints, agent);
        NodeSeeTarget nodeSeeTarget         = new NodeSeeTarget(GetComponent <FieldOfView>(), agent, transform, target);
        Invertor      invertorSeeTarget     = new Invertor(nodeSeeTarget);
        NodeHasTarget nodeHasTarget         = new NodeHasTarget(target);
        Invertor      invertorNodeHasTarget = new Invertor(nodeHasTarget);
        // Patrol group
        Sequence sequencePatrolling = new Sequence(invertorNodeHasTarget, nodePatrol, invertorSeeTarget);
        #endregion

        #region chasing
        NodeCheckBool     nodeHasWeapon     = new NodeCheckBool(hasWeapon);
        NodeGoToTransform nodeGoToTransform = new NodeGoToTransform(1f, GameObject.FindWithTag("Weapon").transform, agent);
        NodeGetWeapon     nodeGetWeapon     = new NodeGetWeapon(1f, GameObject.FindWithTag("Weapon").transform, agent, hasWeapon);
        NodeChase         nodeChase         = new NodeChase(1f, 5, target, agent, 5f, true);
        NodeAttack        nodeAttack        = new NodeAttack(1f, agent, target);

        Sequence sequenceC1 = new Sequence(nodeGoToTransform, nodeGetWeapon);
        Selector selectorC1 = new Selector(new List <Node>()
        {
            nodeHasWeapon, sequenceC1
        });                                                                                 // param

        Sequence sequenceChasing = new Sequence(nodeHasTarget, selectorC1, nodeChase, nodeAttack);

        #endregion


        tree = new Selector(new List <Node> {
            sequenceChasing, sequencePatrolling
        });

        // Show NodeState in editor
        if (Application.isEditor)
        {
            gameObject.AddComponent <ShowNodeTreeStatus>().AddConstructor(transform, tree);
        }
    }