Ejemplo n.º 1
0
    private void TimerVolleyFinished(float secondsOverflow)
    {
        VolleyData volley = data.volley;

        float[] angles = UtilSpread.PopulateAngle(volley.spreadAngle,
                                                  data.volley.projectile.angle,
                                                  volley.projectileCount);
        foreach (float a in angles)
        {
            float angle = a;
            if (data.refs.player != null)
            {
                if (volley.aimAtPlayer)
                {
                    Vector3 playerPos = data.refs.player.transform.position;
                    angle += Angle.FromPoint(transform.position, playerPos).GetDegrees();
                    //UtilHeading2D.SignedAngleToPoint(transform.position, playerPos);
                }
            }
            Quaternion           rotation   = Quaternion.AngleAxis(angle, Vector3.forward);
            GameObject           projectile = Instantiate(prefabProjectile, transform.position, rotation);
            EnemyProjectile      proj       = projectile.GetComponent <EnemyProjectile>();
            EnemyProjectile.Data projData   = data.volley.projectile.DeepCopy();
            projData.angle = angle;
            proj.SetData(projData);
            Velocity2D leftMovement = projectile.GetComponent <Velocity2D>();
            leftMovement.SetVelocity(new Vector2(-data.projectileLeftSpeed, 0.0f));
            projectile.GetComponent <TimeScale>().SetData(timeScale);
        }
        data.volley.projectile.angle += data.volleyDirectionDeltaPerShot;
    }
Ejemplo n.º 2
0
 private void FixedUpdate()
 {
     while (timerVolley.TimeUp(data.refs.ts.DeltaTime()))
     {
         VolleyData volley = data.volley;
         float[]    angles = UtilSpread.PopulateAngle(volley.spreadAngle,
                                                      data.volley.projectile.angle,
                                                      volley.projectileCount);
         foreach (float a in angles)
         {
             float angle = a;
             if (data.refs.player != null)
             {
                 if (volley.aimAtPlayer)
                 {
                     Vector3 playerPos = data.refs.player.transform.position;
                     angle += UtilHeading2D.SignedAngleToPoint(transform.position, playerPos);
                 }
             }
             Quaternion           rotation   = Quaternion.AngleAxis(angle, Vector3.forward);
             GameObject           projectile = Instantiate(prefabProjectile, transform.position, rotation);
             EnemyProjectile      proj       = projectile.GetComponent <EnemyProjectile>();
             EnemyProjectile.Data projData   = data.volley.projectile.DeepCopy();
             projData.angle = angle;
             proj.SetData(projData);
             Velocity2D      leftMovement = projectile.GetComponent <Velocity2D>();
             Velocity2D.Data v2d          = new Velocity2D.Data(
                 new Velocity2D.Data.Refs(data.refs.ts),
                 new Vector2(-data.projectileLeftSpeed, 0.0f));
             leftMovement.SetData(v2d);
         }
         data.volley.projectile.angle += data.volleyDirectionDeltaPerShot;
     }
 }