| 123456789101112131415161718192021222324252627282930313233 |
- using UnityEngine;
- public class PiercingEffect : BallEffectBase
- {
- private int _remainingPierceHits;
- private PiercingEffectDefinition Config => definition as PiercingEffectDefinition;
- public override void OnBallLaunched(BallScript ball)
- {
- _remainingPierceHits = Config != null ? Config.PierceHits : 0;
- }
- public override void OnBallReset(BallScript ball)
- {
- _remainingPierceHits = Config != null ? Config.PierceHits : 0;
- }
- public override void OnHitBlock(BallScript ball, blockScript block, Collision2D collision)
- {
- if (_remainingPierceHits == 0)
- return;
- if (_remainingPierceHits > 0)
- _remainingPierceHits--;
- // Override post-collision bounce and keep travelling in the incoming direction.
- Vector2 incoming = ball.GetPrePhysicsVelocity();
- if (incoming.sqrMagnitude < 0.0001f)
- return;
- ball.Body.linearVelocity = incoming.normalized * ball.GetCurrentSpeed();
- }
- }
|