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; }
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; } }