ASCENO
Loading Asceno
Asceno
UnityLesson 2918/09/2026Asceno

Moving a 3D Character in Unity

3D movement requires a clear coordinate system and a decision about how the character faces its movement direction. Rigidbody suits physics-driven control, while CharacterController suits kinematic control. The example maps horizontal and vertical input to a Vector3 on the XZ plane, normalises diagonal movement, and rotates smoothly. It also helps choose one controller model instead of mixing both.

ASCENO / UNITY STUDY NOTES · 32

Moving a 3D Character in Unity

Di chuyển nhân vật 3D trong Unity

The lesson starts with a direct Unity screenshot so the practical action is visible. The nine following figures are language-neutral illustrations; the bilingual text below them carries the explanation. The main topic is unity 3d movement. Figure 1 is practical evidence; figures 2–10 use only shapes, symbols, and visual relationships so they can remain unchanged across languages.

Learning goals

  • Explain the concept with a model or data flow.
  • Know exactly which Unity window to open.
  • Predict the result before pressing Play and find evidence.
  • Rebuild a small experiment and debug it methodically.

1. Hands-on practice in Unity

Open the test Scene, select the relevant object, and perform the action described in the lesson. This is a native Unity screenshot that shows where to begin; the steps and meaning are explained in the text below.

Moving a 3D Character in Unity — native Unity practice
Figure 1/10 — Direct Unity screenshot: the starting point for the hands-on practice.

2. System illustration

3D movement requires a clear coordinate system and a decision about how the character faces its movement direction. Rigidbody suits physics-driven control, while CharacterController suits kinematic control. The illustration below contains no language-specific text; read it together with this explanation and the concrete steps.

  • unity 3d movement | the lesson concept | read the focus and hands-on example | do not infer it from object colours
  • Input/setting | the input data or configuration | record the value before changing it | do not change several things at once
  • Result/evidence | what must be observed in the Scene, Game, Inspector, or Console | capture the correct panel | a polished image is not evidence
Moving a 3D Character in Unity — language-neutral system illustration
Figure 2/10 — Language-neutral system illustration; the explanation is carried by the text around it.

3. Cause → result illustration

Read the arrow direction, relative position, and symbol changes as a causal relationship. The explanation below names each step in text rather than relying on words inside the image.

  1. Define the question
  2. Build a small test Scene
  3. Change one value or reference
  4. Press Play / run the action
  5. Read the correct panel
  6. Compare with the prediction
Moving a 3D Character in Unity — language-neutral cause and result illustration
Figure 3/10 — Language-neutral cause → result illustration using symbols and arrows.

4. Sequence illustration

Open Unity, select Player/Ground, inspect the matching Rigidbody–Collider pair, then enter Play Mode to observe a collision or trigger.

Moving a 3D Character in Unity — language-neutral sequence illustration
Figure 4/10 — Language-neutral sequence illustration; window names and actions are explained in text.

5. Object structure illustration

Read the object name in the Hierarchy first. If the name does not communicate its role, rename it in the test Scene; a screenshot is useful only when the reader knows what is selected.

Moving a 3D Character in Unity — language-neutral object structure illustration
Figure 5/10 — Language-neutral illustration of parent/child structure and object selection.

6. Configuration illustration

Select the object representing unity 3d movement in the Hierarchy. Read Transform first, then find the relevant Component/field. Record the current value before changing it; Define the game's up axis and the plane where the character may move

Moving a 3D Character in Unity — language-neutral configuration illustration
Figure 6/10 — Language-neutral configuration and reference illustration; exact locations are named in the text.

7. Result observation illustration

The Console is not decoration: use it to verify Keep rotation, movement, and gravity as separately testable pieces. If no log appears, check the active object, script compilation, and Console filters before adding more code.

Moving a 3D Character in Unity — language-neutral observation illustration
Figure 7/10 — Language-neutral illustration of input, log, state, and result.

8. Code → state illustration

Do not copy code away from the Scene. Before each line, identify the input object/reference; after each line, identify the state or output that should change.

using UnityEngine;

public class Simple3DMove : MonoBehaviour
{
    [SerializeField] private CharacterController controller;
    [SerializeField] private float speed = 5f;
    [SerializeField] private float turnSpeed = 12f;

    private void Update()
    {
        Vector3 input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
        Vector3 direction = input.sqrMagnitude > 1f ? input.normalized : input;
        if (direction.sqrMagnitude > 0.001f)
            transform.forward = Vector3.Slerp(transform.forward, direction, turnSpeed * Time.deltaTime);
        controller.Move(direction * speed * Time.deltaTime);
    }
}
Moving a 3D Character in Unity — language-neutral state illustration
Figure 8/10 — Language-neutral illustration of code, state, and output; real code is explained in text.

9. Experiment illustration

The example maps horizontal and vertical input to a Vector3 on the XZ plane, normalises diagonal movement, and rotates smoothly. It also helps choose one controller model instead of mixing both.

  1. Define the game's up axis and the plane where the character may move.
  2. Normalise direction before multiplying by speed so diagonals are not faster.
  3. Keep rotation, movement, and gravity as separately testable pieces.
  4. Run again after reverting to check that the result is reproducible.
  5. Record the input value, action, result, and reason for the change.
Moving a 3D Character in Unity — language-neutral experiment illustration
Figure 9/10 — Language-neutral experiment illustration: one change, one prediction, one piece of evidence.

10. Failure → fix illustration

  • Selecting the wrong object or asset means a correct edit appears to do nothing.
  • Changing several fields at once hides the cause.
  • Looking only at the Scene while ignoring the Inspector/Console.
  • Skipping verification specific to unity 3d movement.
Moving a 3D Character in Unity — language-neutral correction illustration
Figure 10/10 — Language-neutral wrong path → check → correction illustration; the text names each failure.

The ASCENO perspective: A good figure must help the reader answer one concrete question. If it does not show what to select, where to look, what to change, or where the result appears, it is not ready for documentation.