コード例 #1
0
ファイル: AIKeepDistance.cs プロジェクト: DrMikeCooper/RPG
        public override AIAction Execute(AIBrain brain)
        {
            string     msg    = "+MV:";
            GameObject target = null;

            switch (follow)
            {
            case FollowTarget.Player:
                target = GetPlayer();
                break;

            case FollowTarget.Target:
                target = brain.character.target.gameObject;
                break;
            }

            if (target)
            {
                Vector3 dir = brain.character.transform.position - target.transform.position;
                dir.y = 0;
                dir.Normalize();
                Vector3 targetPoint = target.transform.position + dir * distance;
                brain.MoveTo(targetPoint);
                msg += "(" + (int)targetPoint.x + "," + (int)targetPoint.z + ")";
            }

            brain.AddDebugMsg(msg);

            return(this);
        }
コード例 #2
0
        public override float Evaluate(AIBrain brain)
        {
            decided = true;
            isTrue  = IsCondition(condition, brain.character);

            AIAction node = isTrue ? nodeTrue : nodeFalse;

            brain.AddDebugMsg("-BR(" + isTrue + ")" + node.name);

            return(node.Evaluate(brain));
        }
コード例 #3
0
        public override float Evaluate(AIBrain brain)
        {
            // if our condition is false, don't do it
            if (!IsCondition(condition, brain.character))
            {
                brain.AddDebugMsg("-PW(not)" + power.name);
                return(0);
            }

            // we can use the power, so evaluate it
            return(power.Evaluate(brain, targetCondition));
        }
コード例 #4
0
        public override AIAction Execute(AIBrain brain)
        {
            Evaluate(brain);

            string msg = "+EV:" + (bestBehaviour ? bestBehaviour.name : "null") + "(" + bestEvaluation + ")";

            brain.AddDebugMsg(msg);

            if (bestBehaviour)
            {
                bestBehaviour.Execute(brain);
            }
            return(bestBehaviour);
        }
コード例 #5
0
        public override AIAction Execute(AIBrain brain)
        {
            if (!decided)
            {
                isTrue = IsCondition(condition, brain.character);
            }

            AIAction node = isTrue ? nodeTrue : nodeFalse;

            brain.AddDebugMsg("+BR:" + isTrue + " " + node.name);

            decided = false;

            return(node.Execute(brain));
        }
コード例 #6
0
ファイル: AIKeepDistance.cs プロジェクト: DrMikeCooper/RPG
        public override float Evaluate(AIBrain brain)
        {
            GameObject target = brain.character.target ? brain.character.target.gameObject : null;

            if (follow == FollowTarget.Player)
            {
                target = GetPlayer();
            }

            if (target == null)
            {
                return(0);
            }

            float dist = Mathf.Abs(distance - Vector3.Distance(target.transform.position, brain.transform.position));

            dist = Mathf.Max(dist - 1, 0);

            brain.AddDebugMsg("-FW(" + dist * 0.1f + ")");
            return(dist * 0.1f);
        }
コード例 #7
0
 public override AIAction Execute(AIBrain brain)
 {
     brain.AddDebugMsg("+PW:" + power.name);
     return(power.Execute(brain));
 }
コード例 #8
0
ファイル: AIPatrol.cs プロジェクト: DrMikeCooper/RPG
 public override AIAction Execute(AIBrain brain)
 {
     brain.AddDebugMsg("+PATROL");
     brain.patrolling.Patrol(brain);
     return(this);
 }