Skip to content

Commit

Permalink
Fix look_at_from_position() usage in Your first 2D game tutorial
Browse files Browse the repository at this point in the history
The mob's orientation was previously shifted according to the player's
height, which could lead to collision and movement issues that were
difficult to diagnose.
  • Loading branch information
Calinou committed Feb 10, 2025
1 parent 1d9c4a4 commit 76af79f
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions getting_started/first_3d_game/04.mob_scene.rst
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,11 @@ between ``-PI / 4`` radians and ``PI / 4`` radians.
func initialize(start_position, player_position):
# We position the mob by placing it at start_position
# and rotate it towards player_position, so it looks at the player.
look_at_from_position(start_position, player_position, Vector3.UP)
#
# Ignore the player's height, so that the mob's orientation is not slightly
# shifted if the mob spawns while the player is jumping.
var target = Vector3(player_position.x, start_position.y, player_position.z)
look_at_from_position(start_position, target, Vector3.UP)
# Rotate this mob randomly within range of -45 and +45 degrees,
# so that it doesn't move directly towards the player.
rotate_y(randf_range(-PI / 4, PI / 4))
Expand All @@ -172,7 +176,11 @@ between ``-PI / 4`` radians and ``PI / 4`` radians.
{
// We position the mob by placing it at startPosition
// and rotate it towards playerPosition, so it looks at the player.
LookAtFromPosition(startPosition, playerPosition, Vector3.Up);
//
// Ignore the player's height, so that the mob's orientation is not slightly
// shifted if the mob spawns while the player is jumping.
Vector3 target = Vector3(player_position.x, start_position.y, player_position.z);
LookAtFromPosition(startPosition, target, Vector3.Up);
// Rotate this mob randomly within range of -45 and +45 degrees,
// so that it doesn't move directly towards the player.
RotateY((float)GD.RandRange(-Mathf.Pi / 4.0, Mathf.Pi / 4.0));
Expand Down

0 comments on commit 76af79f

Please sign in to comment.