示例#1
0
    /// <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;
         }
     }
 }
示例#4
0
    /// <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;
    }
示例#5
0
 // Start is called before the first frame update
 public void Initialize(SC_KoaManager manager)
 {
     this.manager = manager;
 }