public NodeSeeTarget(FieldOfView fov, NavMeshAgent navMeshAgent, Transform orgin, VariableTransform target) { this.fov = fov; this.navMeshAgent = navMeshAgent; this.orgin = orgin; this.target = target; }
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); } }
/// <summary> /// Constructor /// </summary> /// <param name="minDistanceToTarget">The minimum distance the navMeshAgent needs to be to the target before stopping</param> /// <param name="target">The target transform the navMeshAgent moves towords</param> /// <param name="navMeshAgent">The agent that will be moving towords target</param> public NodeChase(float minDistanceToTarget, float maxDistanceToTarget, VariableTransform target, NavMeshAgent navMeshAgent, float agroTime, bool loseTargetTransform) { this.minDistanceToTarget = minDistanceToTarget; this.maxDistanceToTarget = maxDistanceToTarget; this.target = target; this.navMeshAgent = navMeshAgent; this.agroTime = agroTime; agroTimer = agroTime; this.loseTargetTransform = loseTargetTransform; }
private void Start() { gameManager = GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameManager>(); variableTransform = GetComponent <VariableTransform>(); variableTransform.variableTransformReference = GetComponentInParent <VariableTransformReference>(); rigidbody = GetComponent <Rigidbody>(); Assert.IsNotNull(arrowHeadCollider); Assert.IsNotNull(rigidbody); LevelEvents.ContinueToNextLevel += this.DestroyObject; //destroy arrow on loading next level }
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); } }
public NodeAttack(float attackRange, NavMeshAgent navMeshAgent, VariableTransform target) { this.attackRange = attackRange; this.navMeshAgent = navMeshAgent; this.target = target; }
public NodeHasTarget(VariableTransform target) { this.target = target; }