Exemplo n.º 1
0
 public void Simulate()
 {
     if (!root.CanExecute(this))
     {
         return;
     }
     root.Execute(this);
 }
Exemplo n.º 2
0
        public NodeResult Execute(BehaviourTreeAgent agent)
        {
            if (!getWhileCondition())
            {
                return(getSuccessCondition() ? NodeResult.Success : NodeResult.Failed);
            }



            var result = child.Execute(agent);

            if (result == NodeResult.Failed || result == NodeResult.Running)
            {
                return(result);
            }

            return(getSuccessCondition() ? NodeResult.Success : NodeResult.Failed);
        }
        public void SimulateBehaviour()
        {
            var oldPos = Physical.Position;

            Brain.UpdatePercepts(Physical.Position);
            if (behaviourTree.CanExecute(agent))
            {
                behaviourTree.Execute(agent);
            }

            var dir = Vector3.Normalize((Physical.Position - oldPos).ChangeY(0));

            if (dir.Length() > 0.5f)
            {
                Physical.Rotation = Functions.CreateFromLookDir(dir.xna()).dx()
                                    * Quaternion.RotationAxis(Vector3.UnitY, MathHelper.PiOver2);
                Physical.Position = Physical.Position;
            }
        }