Bird
Raised Fist0
Unityframework~10 mins

3D coordinate system in Unity - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - 3D coordinate system
Origin (0,0,0)
X-axis: left-right
Y-axis: up-down
Z-axis: forward-backward
Point (x,y,z) located in 3D space
The 3D coordinate system places points using three values: X (left-right), Y (up-down), and Z (forward-backward) from the origin.
Execution Sample
Unity
Vector3 point = new Vector3(1, 2, 3);
Debug.Log(point);
Creates a point at coordinates (1, 2, 3) and prints it.
Execution Table
StepActionXYZOutput
1Create Vector3 point123(1.0, 2.0, 3.0)
2Print point123Logs: (1.0, 2.0, 3.0)
3End---Execution stops after printing point
💡 Execution stops after printing the Vector3 point coordinates.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
point.x-111
point.y-222
point.z-333
Key Moments - 2 Insights
Why does the Z value represent forward and backward, not left or right?
In the execution_table row 1, the Z value is set to 3, which means the point is 3 units forward from the origin, following Unity's 3D coordinate system convention.
What happens if we change the Y value to 0?
Changing Y to 0 would place the point on the horizontal plane at the same height as the origin, as shown by the variable_tracker where Y controls vertical position.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the Y value of the point at Step 1?
A1
B3
C2
D0
💡 Hint
Check the 'Y' column in execution_table row with Step 1.
At which step does the program print the point coordinates?
AStep 2
BStep 3
CStep 1
DNo printing occurs
💡 Hint
Look at the 'Action' and 'Output' columns in execution_table.
If the X value changed to -1, what would the point represent?
A1 unit to the right
B1 unit to the left
C1 unit up
D1 unit forward
💡 Hint
Recall that X axis controls left-right position in the 3D coordinate system.
Concept Snapshot
3D coordinate system in Unity uses Vector3(x, y, z).
X = left-right, Y = up-down, Z = forward-backward.
Origin is at (0,0,0).
Points are placed relative to origin using these three values.
Use Debug.Log to print Vector3 values.
Full Transcript
In Unity's 3D coordinate system, every point is defined by three numbers: X, Y, and Z. X moves left or right, Y moves up or down, and Z moves forward or backward from the origin point (0,0,0). For example, creating a Vector3 with (1, 2, 3) places a point 1 unit right, 2 units up, and 3 units forward. When we print this point, Unity shows it as (1.0, 2.0, 3.0). Understanding these axes helps place objects correctly in 3D space.

Practice

(1/5)
1.

In Unity's 3D coordinate system, which axis typically represents the vertical direction?

easy
A. Z-axis
B. X-axis
C. W-axis
D. Y-axis

Solution

  1. Step 1: Understand Unity's coordinate axes

    Unity uses X for horizontal (left-right), Y for vertical (up-down), and Z for depth (forward-back).
  2. Step 2: Identify the vertical axis

    The vertical direction is along the Y-axis in Unity's 3D space.
  3. Final Answer:

    Y-axis -> Option D
  4. Quick Check:

    Vertical = Y-axis [OK]
Hint: Remember Y is up/down in Unity's 3D space [OK]
Common Mistakes:
  • Confusing Z-axis as vertical
  • Thinking X-axis is vertical
  • Using W-axis which doesn't exist in 3D
2.

Which of the following is the correct way to set an object's position to (1, 2, 3) in Unity using Vector3?

transform.position = ?;
easy
A. new Vector2(1, 2, 3)
B. Vector3(1, 2, 3)
C. new Vector3(1, 2, 3)
D. Vector3.new(1, 2, 3)

Solution

  1. Step 1: Recall Vector3 instantiation syntax

    In Unity C#, you create a Vector3 using the constructor: new Vector3(x, y, z).
  2. Step 2: Check each option's syntax

    new Vector3(1, 2, 3) uses correct syntax. Vector3(1, 2, 3) misses 'new'. new Vector2(1, 2, 3) uses Vector2 which only has 2 components. Vector3.new(1, 2, 3) uses incorrect method call.
  3. Final Answer:

    new Vector3(1, 2, 3) -> Option C
  4. Quick Check:

    Use 'new Vector3(x, y, z)' to create 3D points [OK]
Hint: Always use 'new Vector3' with three numbers [OK]
Common Mistakes:
  • Omitting 'new' keyword
  • Using Vector2 instead of Vector3
  • Wrong method call syntax
3.

What will be the output of this Unity C# code snippet?

Vector3 pos = new Vector3(2, 5, -3);
pos.z = 10;
Debug.Log(pos);
medium
A. (2.0, 5.0, 10.0)
B. (2.0, 5.0, -3.0)
C. (0.0, 0.0, 10.0)
D. Error: Cannot assign to z

Solution

  1. Step 1: Understand Vector3 initialization

    pos is set to (2, 5, -3) initially.
  2. Step 2: Modify the z component

    pos.z = 10 changes the z value from -3 to 10.
  3. Step 3: Output the Vector3

    Debug.Log prints the current pos, which is (2.0, 5.0, 10.0).
  4. Final Answer:

    (2.0, 5.0, 10.0) -> Option A
  5. Quick Check:

    Changing z updates position z value [OK]
Hint: Changing pos.z updates only the z coordinate [OK]
Common Mistakes:
  • Thinking original z stays unchanged
  • Expecting error on assignment
  • Confusing output format
4.

Identify the error in this Unity C# code that tries to move an object up by 1 unit:

transform.position = transform.position + Vector3.up * 1;
medium
A. Code is correct and moves object up by 1 unit
B. Cannot add Vector3 to transform.position
C. Missing semicolon at the end
D. Vector3.up is not defined in Unity

Solution

  1. Step 1: Check Vector3.up usage

    Vector3.up is a predefined vector (0,1,0) in Unity representing upward direction.
  2. Step 2: Verify addition with transform.position

    transform.position is a Vector3, so adding Vector3.up * 1 is valid and moves the object up by 1 unit.
  3. Final Answer:

    Code is correct and moves object up by 1 unit -> Option A
  4. Quick Check:

    Vector3.up moves object up [OK]
Hint: Vector3.up is (0,1,0), adding moves object up [OK]
Common Mistakes:
  • Thinking Vector3.up is undefined
  • Believing Vector3 addition is invalid
  • Missing semicolon (actually present)
5.

You want to move an object diagonally forward and up by 3 units each in Unity. Which code correctly updates transform.position?

hard
A. transform.position += new Vector3(3, 3, 3);
B. transform.position += Vector3.forward * 3 + Vector3.up * 3;
C. transform.position = Vector3.forward * 3 + Vector3.up * 3;
D. transform.position += Vector3.right * 3 + Vector3.up * 3;

Solution

  1. Step 1: Understand directions in Unity

    Vector3.forward is (0,0,1) for forward, Vector3.up is (0,1,0) for up.
  2. Step 2: Combine movements correctly

    Adding Vector3.forward * 3 and Vector3.up * 3 moves object 3 units forward and 3 units up.
  3. Step 3: Use '+=' to add to current position

    transform.position += Vector3.forward * 3 + Vector3.up * 3; correctly adds this combined vector to current position.
  4. Final Answer:

    transform.position += Vector3.forward * 3 + Vector3.up * 3; -> Option B
  5. Quick Check:

    Use '+=' with combined vectors for diagonal move [OK]
Hint: Add forward and up vectors multiplied by distance [OK]
Common Mistakes:
  • Replacing position instead of adding
  • Using wrong axis like right instead of forward
  • Adding equal values to x, y, z instead of correct axes