コード例 #1
0
ファイル: Wave.cs プロジェクト: saulgalaviz/waveRaiders
 // Update is called once per frame
 void Update()
 {
     if (randomWaveTimer < randomWaveTimerTempMax)
     {
         randomWaveTimer += Time.deltaTime;
     }
     else
     {
         if (randomWaves.Length > 0)
         {
             WaveHog wave = randomWaves[Random.Range(0, randomWaves.Length)];
             AddWave(wave.initialPosition, wave.maxheight, wave.velocity, wave.wavelength);
         }
         randomWaveTimerTempMax = randomWaveTimerMax + Random.Range(0, randomWaveTimerVariance);
         randomWaveTimer        = 0;
     }
     sonicEdge = edgeHog.points;
     for (int i = 0; i < numPoints; ++i)
     {
         waterHeights[i] = 0;
     }
     foreach (WaveHog waveHog in waveHogs)
     {
         waveHog.valid = false;
     }
     for (int i = 0; i < numPoints; ++i)
     {
         foreach (WaveHog globalWave in globalWaves)
         {
             waterHeights[i] += globalWave.maxheight * Mathf.Cos(2 * Mathf.PI / globalWave.wavelength * (i * stepWidth - globalWave.velocity * globalWave.timer) + 2 * Mathf.PI / globalWave.wavelength * globalWave.initialPosition) + globalWave.maxheight;
         }
         foreach (WaveHog waveHog in waveHogs)
         {
             if (i * stepWidth > waveHog.initialPosition + waveHog.velocity * waveHog.timer - (waveHog.wavelength / 2) && i * stepWidth < waveHog.initialPosition + waveHog.velocity * waveHog.timer + (waveHog.wavelength / 2))
             {
                 waveHog.valid    = true;
                 waterHeights[i] += waveHog.maxheight * Mathf.Cos(2 * Mathf.PI / waveHog.wavelength * (i * stepWidth - waveHog.velocity * waveHog.timer) + 2 * Mathf.PI / waveHog.wavelength * waveHog.initialPosition) + waveHog.maxheight;
             }
         }
         lineRenderer.SetPosition(i, new Vector3(firstPosition.position.x + i * stepWidth, waterHeights[i]));
         belowRenderer.SetPosition(i, new Vector3(firstPosition.position.x + i * stepWidth, waterHeights[i] - lineRenderer.startWidth / 2 - belowRenderer.startWidth / 2, 1));
         bottomRenderer.SetPosition(i, new Vector3(firstPosition.position.x + i * stepWidth, waterHeights[i] - lineRenderer.startWidth / 2 - belowRenderer.startWidth - bottomRenderer.startWidth / 2, 2));
         sonicEdge[i] = new Vector2(firstPosition.position.x + i * stepWidth, waterHeights[i] + lineRenderer.startWidth / 2);
     }
     foreach (WaveHog globalWave in globalWaves)
     {
         globalWave.timer += Time.deltaTime;
     }
     for (int i = waveHogs.Count - 1; i >= 0; --i)
     {
         if (!waveHogs[i].valid)
         {
             waveHogs.RemoveAt(i);
         }
         else
         {
             waveHogs[i].timer += Time.deltaTime;
         }
     }
 }
コード例 #2
0
ファイル: Wave.cs プロジェクト: saulgalaviz/waveRaiders
    public void AddWave(float initialPosition, float maxheight, float velocity, float wavelength)
    {
        WaveHog waveHog = new WaveHog();

        waveHog.initialPosition = initialPosition;
        waveHog.maxheight       = maxheight;
        waveHog.velocity        = velocity;
        waveHog.wavelength      = wavelength;
        waveHog.timer           = 0;
        waveHog.valid           = true;
        waveHogs.Add(waveHog);
    }