Select Git revision
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; }
}