add a random starting x direction to the ball
this means the ball can either go left or righ randomly instead of always going left.
This commit is contained in:
parent
133e0fb734
commit
e50f0aefb1
1 changed files with 18 additions and 1 deletions
|
@ -18,8 +18,9 @@ public partial class Ball : CharacterBody2D
|
|||
{
|
||||
// this should dispose when this method goes out of scope (this means after the velocity variable is assigned)
|
||||
using var rng = new RandomNumberGenerator();
|
||||
rng.Randomize();
|
||||
// set the velocity currently to the left of the screen with a random y angle.
|
||||
_velocity = Vector2.Left * BallSpeed + new Vector2(0, rng.RandfRange(-_maxRandomAngle, _maxRandomAngle) * BallSpeed);
|
||||
_velocity = GetRandomStartingDirection() * BallSpeed + new Vector2(0, rng.RandfRange(-_maxRandomAngle, _maxRandomAngle) * BallSpeed);
|
||||
}
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
|
@ -38,4 +39,20 @@ public partial class Ball : CharacterBody2D
|
|||
if (collision == null) return;
|
||||
_velocity = _velocity.Bounce(collision.GetNormal());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// this method generates a random number between 0 and 1 and
|
||||
/// either returns Vector2.Left or Vector2.Right based on that number.
|
||||
/// </summary>
|
||||
private Vector2 GetRandomStartingDirection() {
|
||||
using var rng = new RandomNumberGenerator();
|
||||
rng.Randomize();
|
||||
var range = rng.RandiRange(0,1);
|
||||
|
||||
if (range == 0) {
|
||||
return Vector2.Left;
|
||||
}
|
||||
|
||||
return Vector2.Right;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue