Skip to content

Commit 272ba7f

Browse files
committed
Change randi_range to randf_range to match source
The docs used randi_range instead of randf_range for the mob's random_speed which did not match the source and would cause a bug with integer division when using it to scale the animation speed.
1 parent 44e7c87 commit 272ba7f

3 files changed

Lines changed: 34 additions & 34 deletions

File tree

getting_started/first_3d_game/04.mob_scene.rst

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ and ``max_speed``, to define a random speed range, which we will later use to de
107107
extends CharacterBody3D
108108

109109
# Minimum speed of the mob in meters per second.
110-
@export var min_speed = 10
110+
@export var min_speed = 10.0
111111
# Maximum speed of the mob in meters per second.
112-
@export var max_speed = 18
112+
@export var max_speed = 18.0
113113

114114

115115
func _physics_process(_delta):
@@ -125,10 +125,10 @@ and ``max_speed``, to define a random speed range, which we will later use to de
125125

126126
// Minimum speed of the mob in meters per second
127127
[Export]
128-
public int MinSpeed { get; set; } = 10;
128+
public float MinSpeed { get; set; } = 10.0;
129129
// Maximum speed of the mob in meters per second
130130
[Export]
131-
public int MaxSpeed { get; set; } = 18;
131+
public float MaxSpeed { get; set; } = 18.0;
132132

133133
public override void _PhysicsProcess(double delta)
134134
{
@@ -178,17 +178,17 @@ between ``-PI / 4`` radians and ``PI / 4`` radians.
178178
RotateY((float)GD.RandRange(-Mathf.Pi / 4.0, Mathf.Pi / 4.0));
179179
}
180180

181-
We got a random position, now we need a ``random_speed``. ``randi_range()`` will be useful as it gives random int values, and we will use ``min_speed`` and ``max_speed``.
182-
``random_speed`` is just an integer, and we just use it to multiply our ``CharacterBody3D.velocity``. After ``random_speed`` is applied, we rotate ``CharacterBody3D.velocity`` Vector3 towards the player.
181+
We got a random position, now we need a ``random_speed``. ``randf_range()`` will be useful as it gives random float values, and we will use ``min_speed`` and ``max_speed``.
182+
``random_speed`` is just an float, and we just use it to multiply our ``CharacterBody3D.velocity``. After ``random_speed`` is applied, we rotate ``CharacterBody3D.velocity`` Vector3 towards the player.
183183

184184
.. tabs::
185185
.. code-tab:: gdscript GDScript
186186

187187
func initialize(start_position, player_position):
188188
# ...
189189

190-
# We calculate a random speed (integer)
191-
var random_speed = randi_range(min_speed, max_speed)
190+
# We calculate a random speed (float)
191+
var random_speed = randf_range(min_speed, max_speed)
192192
# We calculate a forward velocity that represents the speed.
193193
velocity = Vector3.FORWARD * random_speed
194194
# We then rotate the velocity vector based on the mob's Y rotation
@@ -201,8 +201,8 @@ We got a random position, now we need a ``random_speed``. ``randi_range()`` will
201201
{
202202
// ...
203203

204-
// We calculate a random speed (integer).
205-
int randomSpeed = GD.RandRange(MinSpeed, MaxSpeed);
204+
// We calculate a random speed (float).
205+
float randomSpeed = GD.RandRange(MinSpeed, MaxSpeed);
206206
// We calculate a forward velocity that represents the speed.
207207
Velocity = Vector3.Forward * randomSpeed;
208208
// We then rotate the velocity vector based on the mob's Y rotation
@@ -255,9 +255,9 @@ Here is the complete ``mob.gd`` script for reference.
255255
extends CharacterBody3D
256256

257257
# Minimum speed of the mob in meters per second.
258-
@export var min_speed = 10
258+
@export var min_speed = 10.0
259259
# Maximum speed of the mob in meters per second.
260-
@export var max_speed = 18
260+
@export var max_speed = 18.0
261261

262262
func _physics_process(_delta):
263263
move_and_slide()
@@ -271,8 +271,8 @@ Here is the complete ``mob.gd`` script for reference.
271271
# so that it doesn't move directly towards the player.
272272
rotate_y(randf_range(-PI / 4, PI / 4))
273273

274-
# We calculate a random speed (integer)
275-
var random_speed = randi_range(min_speed, max_speed)
274+
# We calculate a random speed (float)
275+
var random_speed = randf_range(min_speed, max_speed)
276276
# We calculate a forward velocity that represents the speed.
277277
velocity = Vector3.FORWARD * random_speed
278278
# We then rotate the velocity vector based on the mob's Y rotation
@@ -290,10 +290,10 @@ Here is the complete ``mob.gd`` script for reference.
290290
{
291291
// Minimum speed of the mob in meters per second.
292292
[Export]
293-
public int MinSpeed { get; set; } = 10;
293+
public float MinSpeed { get; set; } = 10.0;
294294
// Maximum speed of the mob in meters per second.
295295
[Export]
296-
public int MaxSpeed { get; set; } = 18;
296+
public float MaxSpeed { get; set; } = 18.0;
297297

298298
public override void _PhysicsProcess(double delta)
299299
{
@@ -310,8 +310,8 @@ Here is the complete ``mob.gd`` script for reference.
310310
// so that it doesn't move directly towards the player.
311311
RotateY((float)GD.RandRange(-Mathf.Pi / 4.0, Mathf.Pi / 4.0));
312312

313-
// We calculate a random speed (integer).
314-
int randomSpeed = GD.RandRange(MinSpeed, MaxSpeed);
313+
// We calculate a random speed (float).
314+
float randomSpeed = GD.RandRange(MinSpeed, MaxSpeed);
315315
// We calculate a forward velocity that represents the speed.
316316
Velocity = Vector3.Forward * randomSpeed;
317317
// We then rotate the velocity vector based on the mob's Y rotation

getting_started/first_3d_game/07.killing_player.rst

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,9 @@ Next is ``mob.gd``.
221221
extends CharacterBody3D
222222

223223
# Minimum speed of the mob in meters per second.
224-
@export var min_speed = 10
224+
@export var min_speed = 10.0
225225
# Maximum speed of the mob in meters per second.
226-
@export var max_speed = 18
226+
@export var max_speed = 18.0
227227

228228
# Emitted when the player jumped on the mob
229229
signal squashed
@@ -240,8 +240,8 @@ Next is ``mob.gd``.
240240
# so that it doesn't move directly towards the player.
241241
rotate_y(randf_range(-PI / 4, PI / 4))
242242

243-
# We calculate a random speed (integer)
244-
var random_speed = randi_range(min_speed, max_speed)
243+
# We calculate a random speed (float)
244+
var random_speed = randf_range(min_speed, max_speed)
245245
# We calculate a forward velocity that represents the speed.
246246
velocity = Vector3.FORWARD * random_speed
247247
# We then rotate the velocity vector based on the mob's Y rotation
@@ -267,10 +267,10 @@ Next is ``mob.gd``.
267267

268268
// Minimum speed of the mob in meters per second
269269
[Export]
270-
public int MinSpeed { get; set; } = 10;
270+
public float MinSpeed { get; set; } = 10.0;
271271
// Maximum speed of the mob in meters per second
272272
[Export]
273-
public int MaxSpeed { get; set; } = 18;
273+
public float MaxSpeed { get; set; } = 18.0;
274274

275275
public override void _PhysicsProcess(double delta)
276276
{
@@ -287,8 +287,8 @@ Next is ``mob.gd``.
287287
// so that it doesn't move directly towards the player.
288288
RotateY((float)GD.RandRange(-Mathf.Pi / 4.0, Mathf.Pi / 4.0));
289289

290-
// We calculate a random speed (integer)
291-
int randomSpeed = GD.RandRange(MinSpeed, MaxSpeed);
290+
// We calculate a random speed (float)
291+
float randomSpeed = GD.RandRange(MinSpeed, MaxSpeed);
292292
// We calculate a forward velocity that represents the speed.
293293
Velocity = Vector3.Forward * randomSpeed;
294294
// We then rotate the velocity vector based on the mob's Y rotation

getting_started/first_3d_game/09.adding_animations.rst

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -522,9 +522,9 @@ And the *Mob*'s script.
522522
extends CharacterBody3D
523523

524524
# Minimum speed of the mob in meters per second.
525-
@export var min_speed = 10
525+
@export var min_speed = 10.0
526526
# Maximum speed of the mob in meters per second.
527-
@export var max_speed = 18
527+
@export var max_speed = 18.0
528528

529529
# Emitted when the player jumped on the mob
530530
signal squashed
@@ -541,8 +541,8 @@ And the *Mob*'s script.
541541
# so that it doesn't move directly towards the player.
542542
rotate_y(randf_range(-PI / 4, PI / 4))
543543

544-
# We calculate a random speed (integer)
545-
var random_speed = randi_range(min_speed, max_speed)
544+
# We calculate a random speed (float)
545+
var random_speed = randf_range(min_speed, max_speed)
546546
# We calculate a forward velocity that represents the speed.
547547
velocity = Vector3.FORWARD * random_speed
548548
# We then rotate the velocity vector based on the mob's Y rotation
@@ -570,10 +570,10 @@ And the *Mob*'s script.
570570

571571
// Minimum speed of the mob in meters per second
572572
[Export]
573-
public int MinSpeed { get; set; } = 10;
573+
public float MinSpeed { get; set; } = 10.0;
574574
// Maximum speed of the mob in meters per second
575575
[Export]
576-
public int MaxSpeed { get; set; } = 18;
576+
public float MaxSpeed { get; set; } = 18.0;
577577

578578
public override void _PhysicsProcess(double delta)
579579
{
@@ -590,8 +590,8 @@ And the *Mob*'s script.
590590
// so that it doesn't move directly towards the player.
591591
RotateY((float)GD.RandRange(-Mathf.Pi / 4.0, Mathf.Pi / 4.0));
592592

593-
// We calculate a random speed (integer).
594-
int randomSpeed = GD.RandRange(MinSpeed, MaxSpeed);
593+
// We calculate a random speed (float).
594+
float randomSpeed = GD.RandRange(MinSpeed, MaxSpeed);
595595
// We calculate a forward velocity that represents the speed.
596596
Velocity = Vector3.Forward * randomSpeed;
597597
// We then rotate the velocity vector based on the mob's Y rotation

0 commit comments

Comments
 (0)