void spawnMissiles(CircleMissileRotatedSpawnerComponent missile, Vector2 position) { float angleOffset = getAngle(missile.amount); float angle = missile.angle; float baseVel = missile.velocity; for (int i = 0; i < missile.amount; i++) { float cosinus = Mathf.Cos(angle); float sinus = Mathf.Sin(angle); float velocityX = baseVel * cosinus - baseVel * sinus; float velocityY = baseVel * sinus + baseVel * cosinus; _pool.CreateEntity() .AddPosition(new Vector2().Set(position)) .AddVelocity(new Vector2(velocityX, velocityY)) .AddHealth(0) .AddCollision(missile.collisionType) .AddResource(missile.resource); angle = angle + angleOffset; } }
void spawnMissiles(CircleMissileRotatedSpawnerComponent missile, Vector2 position) { float angleOffset = getAngle(missile.amount); float angle = missile.angle; float baseVel = missile.velocity; for (int i = 0; i < missile.amount; i++) { float cosinus = Mathf.Cos(angle); float sinus = Mathf.Sin(angle); float velocityX = baseVel * cosinus - baseVel * sinus; float velocityY = baseVel * sinus + baseVel * cosinus; _pool.CreateEntity() .AddPosition(new Vector2().Set(position)) .AddVelocity(new Vector2(velocityX, velocityY)) .AddHealth(0) .AddCollision(missile.collisionType) .AddResource(missile.resource); angle = angle + angleOffset; } }
public void Execute() { float deltaTime = _time.GetSingleEntity().time.deltaTime; foreach (Entity e in _missiles.GetEntities()) { CircleMissileRotatedSpawnerComponent component = e.circleMissileRotatedSpawner; component.time -= deltaTime; if (component.time < 0.0f) { component.time = component.spawnDelay; spawnMissiles(component, e.position.pos); component.angle += component.angleOffset; component.waves--; if (component.waves == 0) { e.RemoveCircleMissileRotatedSpawner(); } } } }