Skip to content

Fix look_at_from_position() usage in Your first 3D game tutorial #10666

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 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 = new Vector3(player_position.x, start_position.y, player_position.z);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Vector3 target = new Vector3(player_position.x, start_position.y, player_position.z);
Vector3 target = new Vector3(playerPosition.X, startPosition.Y, playerPosition.Z);

Only tested to compile the single script, didn't test the whole tutorial.

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 Expand Up @@ -271,7 +279,11 @@ Here is the complete ``mob.gd`` script for reference.
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 Down Expand Up @@ -310,7 +322,11 @@ Here is the complete ``mob.gd`` script for reference.
{
// 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 = new Vector3(player_position.x, start_position.y, player_position.z);
Copy link
Contributor

@tetrapod00 tetrapod00 Feb 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Vector3 target = new Vector3(player_position.x, start_position.y, player_position.z);
Vector3 target = new Vector3(playerPosition.X, startPosition.Y, playerPosition.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
Loading