protected override void Behave(bool trigger, float time) { if (CheckOffScreen()) { Life = 0; IsDead = true; pointValue = 0; float angle = (float)Math.Atan2(velocity.Y, velocity.X) - MathHelper.Pi; EBrancher b = new EBrancher(EnemyManager.EBranchTex, position, angle, 0, 5); EnemyManager.AddEnemy((Enemy)b); } }
protected override void Behave(bool trigger, float time) { currentLife += time; if (!hasBranched && currentLife > BRANCH_TIME && positionInChain < repetitions) { Vector2 nextPos = new Vector2(); float rot; for (int i = 0; i < numBranches; i++) { nextPos.X = position.X + (float)Math.Cos(angle) * length; nextPos.Y = position.Y + (float)Math.Sin(angle) * length; rot = angle + (float)((Game1.rand.NextDouble() - 0.5f) * 2) * (MathHelper.PiOver4 / 2); EBrancher b = new EBrancher(tex, nextPos, rot, positionInChain + 1, repetitions); EnemyManager.AddEnemy((Enemy)b); } hasBranched = true; } }