U
tab 01Căn bản11 bài — chạm để mở
06 / 11 · 8 phút
Căn bản

Cảnh đầu tiên: sàn 3D phẳng

dự án của bạn tới lúc này

Assets/

Scenes/

Arena.unity
FloorMain CameraDirectional Light

Materials/

M_Floor

đã có sẵnbài này thêm

Bắt tay vào làm thôi. Mục tiêu bài này: một cảnh 3D trống với một sàn phẳng, có đèn, và camera nhìn vào nó.

sơ đồ động

Plane là một mặt phẳng ở Y = 0. Mọi thứ khác trong game đều đứng trên nó.

Tạo dự án

  1. 1

    Unity Hub → New project → chọn mẫu Universal 3D (bản cũ gọi là 3D (URP)). URP đẹp hơn và cũng là thứ mobile cần.

  2. 2

    Đặt tên UnityClass. Tránh dấu cách và chữ tiếng Việt có dấu trong đường dẫn.

  3. 3

    Mở xong thì lưu cảnh: File▸Save As → Assets/Scenes/Arena.unity

Thêm sàn

  1. 1

    GameObject▸3D Object▸Plane — một sàn 10×10 mét hiện ra.

  2. 2

    Đổi tên thành Floor trong Hierarchy (bấm đúp chậm, hoặc F2).

  3. 3

    Trong Inspector, đặt Position thành 0, 0, 0. Chuột phải vào dòng Transform → Reset là xong trong một cú click.

  4. 4

    Đặt Scale thành 3, 1, 3 → sàn thành 30×30 mét. Plane scale 1 đã bằng 10 mét rồi.

Gán vật liệu cho sàn

Vật liệu là màu sắc và bề mặt của vật thể. Mesh cho vật thể hình dạng, material cho nó vẻ ngoài.

  1. 1

    Trong Project: Assets▸Create▸Material, đặt tên M_Floor.

  2. 2

    Đặt màu Base Map thành xám đậm (#2B3040) và Smoothness khoảng 0.2.

  3. 3

    Kéo M_Floor từ cửa sổ Project thả thẳng lên sàn trong Scene view.

Tuỳ chọn: texture lưới để nhìn rõ chuyển động

  • Nếu sàn chỉ một màu phẳng, bạn không thể biết nhân vật có đang di chuyển hay không.

  • Đặt Tiling của material thành 10, 10 với một texture ô vuông là nhìn ra ngay.

Camera và ánh sáng

  1. 1

    Chọn Main Camera. Đặt Position 0, 12, -14 và Rotation 35, 0, 0 — góc nhìn chéo từ trên xuống, rất dễ quan sát.

  2. 2

    Cách nhanh hơn: chỉnh Scene view tới góc bạn thích, chọn camera, rồi GameObject▸Align With View (Ctrl/Cmd+Shift+F).

  3. 3

    Directional Light đã có sẵn trong cảnh. Xoay nó khoảng 50, -30, 0 để bóng đổ đẹp.

Tuỳ chọn: dựng sàn bằng code

FloorBuilder.cs — attach to an empty GameObject
using UnityEngine;

public class FloorBuilder : MonoBehaviour
{
    public Material floorMaterial;
    public float sizeInMeters = 30f;

    void Start()
    {
        GameObject floor = GameObject.CreatePrimitive(PrimitiveType.Plane);
        floor.name = "Floor";
        floor.transform.position = Vector3.zero;
        floor.transform.localScale = Vector3.one * (sizeInMeters / 10f); // plane = 10 m
        if (floorMaterial != null)
            floor.GetComponent<Renderer>().material = floorMaterial;
    }
}