/// <summary> /// Initialisation du Flock /// </summary> public void InitializeFlock(FlockSettings newFlockSettings, BezierSolution.BezierSpline spawnSpline, Vector3Int sensitivity) { flockSettings = newFlockSettings; flockInitialRot = transform.rotation; inAttack = false; isSpawning = true; _Player = GameObject.FindGameObjectWithTag("Player"); transform.position = spawnSpline.GetPoint(0); bezierWalkerTime.SetNewSpline(spawnSpline); bezierWalkerTime.NormalizedT = 0; bezierWalkerTime.travelTime = flockSettings.spawnTimer; _mainGuide = gameObject.transform; //Main guide prends la valeur de this (CF : Variable _mainGuide) _GuideList = new List <Transform>(); //Instanciation de la guide list _curCurveDistanceList = new List <Vector3>(); // Instanciation de la list de distance sur les courbes pour chaque guide _BoidSettings = new BoidSettings[6][]; spawnSettings = flockSettings.spawnSettings; roamSettings = flockSettings.roamSettings; attackSettings = flockSettings.attackSettings; destructionSettings = flockSettings.destructionSettings; getAwaySettings = flockSettings.getAwaySettings; hitReactionSettings = flockSettings.hitReactionSettings; _BoidSettings[0] = spawnSettings; _BoidSettings[1] = roamSettings; _BoidSettings[2] = attackSettings; _BoidSettings[3] = destructionSettings; _BoidSettings[4] = getAwaySettings; _BoidSettings[5] = hitReactionSettings; _KoaManager = Instantiate(_KoaPrefab, transform); //Instantiate Koa _SCKoaManager = _KoaManager.GetComponent <SC_KoaManager>(); //Récupère le Koa manager du koa instancié _SCKoaManager.Initialize(_mainGuide, flockSettings.boidSpawn, spawnSettings[0], newFlockSettings, sensitivity); //Initialise le Koa | paramètre : Guide a suivre <> Nombre de Boids a spawn <> Comportement des boids voulu flockWeaponManager.Initialize(flockSettings, KoaMainAnimator, KoaEmissiveAnimator); _splineTab = new BezierSolution.BezierSpline[flockSettings.splines.Length]; for (int i = 0; i < flockSettings.splines.Length; i++) { if (flockSettings.splines[i] != null) { _splineTab[i] = Instantiate(flockSettings.splines[i]); } } Invoke("ActivateFlock", flockSettings.spawnTimer); }
void InitBoids() { //Initialisation de tout les boids for (int i = 0; i < spawnCount; i++) { Boid boid = _boidsTab[i]; //Transform boid.transform.position = transform.position; //Déplacement à la position boid.transform.forward = Random.insideUnitSphere; //Rotation random SC_KoaManager s = null; //Lance l'initialisation de celui-ci avec le comportement initial et le premier guide boid.Initialize(curBoidSettings, _guideList[0], new Vector3Int(100, 100, 100), s, 0); } }
public void GenerateNewBoid() { for (int i = 0; i < curFlockSettings.maxBoid; i++) { if (!_boidsTab[i].isActive) { _boidsTab[i].transform.position = _koa.transform.position; //Déplacement à la position _boidsTab[i].transform.forward = Random.insideUnitSphere; //Rotation random int rnd = 0; if (_guideList.Count > 1) { rnd = Random.Range(1, _guideList.Count); } SC_KoaManager s = null; _boidsTab[i].Initialize(curBoidSettings, _guideList[rnd], sensitivity, s, (int)curFlockSettings.attackType); return; } } }
/// <summary> /// Initialisation /// </summary> /// <param name="settings"></param> /// <param name="target"></param> public void Initialize(BoidSettings settings, Transform target, Vector3Int sensitivity, SC_KoaManager koaManager, int type) { this.koaManager = koaManager; destructionType = DestructionType.none; curFlick = 0; transform.localScale = initScale; this.target = target; //Peut être null this.settings = settings; //Scriptable object this.sensitivity = sensitivity; position = cachedTransform.position; //Déplacement à la position tampon forward = cachedTransform.forward; //Direction selon axe X float startSpeed = (settings.minSpeed + settings.maxSpeed) / 2; //Vitesse d'initialisation velocity = transform.forward * startSpeed; //Stockage de la vélocité selon la vitesse de départ destructionTimer = 1f; curTimer = 0; meshRenderer.material = baseMat; isActive = true; }
// Start is called before the first frame update public void Initialize(SC_KoaManager manager) { this.manager = manager; }