public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } foreach (BehaviourTreeTaskRuntime t in children) { TaskResult result = t.run(controller); if (result == TaskResult.SUCCESS) { return(lastResult = TaskResult.FAIL); } else if (result == TaskResult.FAIL) { return(lastResult = TaskResult.SUCCESS); } else { return(lastResult = TaskResult.RUNNING); } } lastResult = TaskResult.FAIL; return(TaskResult.FAIL); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } bool hasSuccess = false; bool hasRunning = false; foreach (BehaviourTreeTaskRuntime t in children) { TaskResult result = t.run(controller); if (result == TaskResult.SUCCESS) { hasSuccess = true; } else if (result == TaskResult.RUNNING) { hasRunning = true; } } if (hasRunning) { lastResult = TaskResult.RUNNING; } else if (hasSuccess) { lastResult = TaskResult.SUCCESS; } else { lastResult = TaskResult.FAIL; } return(lastResult); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (target.value == null) { return(lastResult = TaskResult.FAIL); } //attack event Base.Events.GameEventID eventID = eventType.value as Base.Events.GameEventID; if (eventID == null) { return(lastResult = TaskResult.FAIL); } //call event Base.Events.AttackTargetEvent attackEvent = new Events.AttackTargetEvent(eventID); attackEvent.DispatchGlobally = false; attackEvent.attackTarget = target.value; attackEvent.Sender = controller.agent.transform.GetInstanceID(); GlobalDataContainer.It.eventsManager.dispatchEvent(attackEvent); //cache result return(lastResult = TaskResult.SUCCESS); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (target.value == null) { return(lastResult = TaskResult.FAIL); } Vector3 dir = new Vector3(useXAxis?target.value.position.x - controller.agent.AgentKinematics.position.x:0, useYAxis ? target.value.position.y - controller.agent.AgentKinematics.position.y : 0, useZAxis ? target.value.position.z - controller.agent.AgentKinematics.position.z : 0); if (dir.magnitude <= distance.value) { if (resetAgentVelocity) { controller.agent.AgentKinematics.velocity = Vector3.zero; } return(lastResult = TaskResult.SUCCESS); } //cache result return(lastResult = TaskResult.FAIL); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (target.value != null && yourself == false) { Base.Game.IIsAlive control = target.value.GetComponent <Base.Game.IIsAlive>(); if (control.isAlive()) { return(lastResult = TaskResult.SUCCESS); } return(lastResult = TaskResult.FAIL); } else if (yourself) { Base.Game.IIsAlive control = controller.agent.GetComponent <Base.Game.IIsAlive>(); if (control.isAlive()) { return(lastResult = TaskResult.SUCCESS); } return(lastResult = TaskResult.FAIL); } //cache result return(lastResult = TaskResult.FAIL); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } Debug.Log(messageToLog + " and from log text: " + logText.value); //cache result lastResult = TaskResult.SUCCESS; return(TaskResult.SUCCESS); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } //we need to look at our target, force it on instant controller.agent.AgentKinematics.velocity = targetVelocity.value; //cache result return(lastResult = TaskResult.SUCCESS); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (flag.value) { if (resetFlag) { flag.value = false; } return(lastResult = TaskResult.SUCCESS); } //cache result return(lastResult = TaskResult.FAIL); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (target.value != null) { return(lastResult = TaskResult.SUCCESS); } GameObject found = null; //find target if (useTag) { found = GameObject.FindGameObjectWithTag(targetTag); if (found != null) { if (useName && !found.name.Equals(targetName)) { return(lastResult = TaskResult.FAIL); } target.value = found.transform; return(lastResult = TaskResult.SUCCESS); } } if (useName) { found = GameObject.Find(targetName); if (found != null) { target.value = found.transform; return(lastResult = TaskResult.SUCCESS); } return(lastResult = TaskResult.FAIL); } //cache result return(lastResult = TaskResult.FAIL); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (target.value == null) { return(lastResult = TaskResult.FAIL); } Transform targetPos = target.value; float speed = moveSpeed.value; //target direction Vector3 dir = new Vector3(targetPos.position.x - controller.agent.AgentKinematics.position.x, 0, targetPos.position.z - controller.agent.AgentKinematics.position.z); //check if are within a radius if (dir.magnitude <= targetRadius) { //already on place controller.agent.AgentKinematics.velocity = Vector3.zero; controller.agent.AgentKinematics.rotation = 0; return(lastResult = TaskResult.SUCCESS); } //still need to move Vector3 velocity = dir.normalized * speed; Debug.DrawLine(controller.agent.AgentKinematics.position, controller.agent.AgentKinematics.position + velocity, Color.red, 0.1f); //we need to look at our target, force it on instant controller.agent.AgentKinematics.velocity = velocity; controller.agent.AgentKinematics.orientation = Base.AI.Agents.KinematicData.DirectionToOrientation(dir.normalized); controller.agent.AgentKinematics.rotation = 0; //cache result return(lastResult = TaskResult.RUNNING); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (target.value == null) { return(lastResult = TaskResult.FAIL); } //attack event Base.Events.GameEventID eventID = eventType.value as Base.Events.GameEventID; if (eventID == null) { return(lastResult = TaskResult.FAIL); } //call event Base.Events.DealDamageEvent dealEvent = new Events.DealDamageEvent(eventID); if (dealToYourself) { dealEvent.damageTarget = controller.agent.transform; } else { dealEvent.damageTarget = target.value; } Base.Game.DamageSourceInfo damagesource = new Game.DamageSourceInfo(); damagesource.damageSources.Add(new Base.Game.DamageSourceInfo.SourceValue(Base.Game.DamageSourceInfo.DamageSource.DEFAULT, 100)); dealEvent.damageValue = damagesource; GlobalDataContainer.It.eventsManager.dispatchEvent(dealEvent); //cache result return(lastResult = TaskResult.SUCCESS); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (counter > 0 && !repeatTimer) { return(lastResult = TaskResult.FAIL); } timer += Time.deltaTime; if (timer > targetTimer.value) { timer = 0; counter++; return(lastResult = TaskResult.SUCCESS); } //cache result return(lastResult = TaskResult.FAIL); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { return(children[0].run(controller)); }
protected bool hasReadyResult(BehaviourTreeController.TreeStatus controller) { return(lastResult != TaskResult.NONE && lastResult != TaskResult.RUNNING && controller.fullTreeTraversalOnRunning == false); }
public virtual TaskResult run(BehaviourTreeController.TreeStatus controller) { return(TaskResult.SUCCESS); }