Skip to content
Snippets Groups Projects
Select Git revision
  • 244f1d34216e3e90cd77ec1d5c6110a6cf1bed7f
  • main default protected
2 results

Bord.cs

Blame
  • Bord.cs 1.35 KiB
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Bord : Comportement
    {
        static public float Urgent = 3.0f;
        static public float Preoccuppant  = 5.0f;
        static public float Intrigant = 8.0f;
    
        public Bord(Agent proprietaire) : base(proprietaire) {}
    
        public override Vector3 reagir(List<Observation> observation) {
            List<Vector3> vectors = new List<Vector3>();
            vectors.Add(proprietaire.direction);
            foreach(Observation o in observation) {
                if (!o.objet.isAlive()) {
                    if(grandDanger(o)) for(int i=0;i<3;i++) vectors.Add(fuir(o.distance));
                    else if(moyenDanger(o)) for(int i=0;i<2;i++) vectors.Add(fuir(o.distance));
                    else if(petitDanger(o)) vectors.Add(fuir(o.distance));
                }
            }
            Vector3 res = Utils.meanVector(vectors);
            return Utils.noiseVector(res,nbBruit,bruit);
        }
        
        private bool grandDanger(Observation o) {
            return (Utils.normVector(o.distance) < Urgent);
        }
    
        private bool moyenDanger(Observation o) {
            return (Utils.normVector(o.distance) < Preoccuppant);
        }
    
        private bool petitDanger(Observation o) {
            return (Utils.normVector(o.distance) < Intrigant);
        }
    
        private Vector3 fuir(Vector3 d) { return -d.normalized; }
    }