Cách vẽ bằng hệ thống hạt trong Unity

Unity Engine, nổi tiếng với bộ công cụ đa dạng và năng động, cung cấp vô số cách để tạo ra trải nghiệm sống động. Trong số này, Particle System nổi bật như một công cụ linh hoạt cho hiệu ứng hình ảnh, từ mô phỏng mưa và khói cho đến tạo hoạt ảnh phức tạp. Một cách sử dụng ít được khám phá của hệ thống này là vẽ tranh trong cảnh Unity. Hướng dẫn này giới thiệu một ứng dụng cải tiến của Hệ thống hạt để mô phỏng hành động sơn trên các bề mặt trong Unity.

Điều kiện tiên quyết

1. Thiết lập cảnh

  • Bắt đầu Unity và tạo một dự án 3D mới (nếu chưa có)
  • Bên trong cửa sổ Hierarchy, nhấp chuột phải và chọn 3D Object -> 'Plane'. Điều này sẽ hoạt động như canvas.
  • Điều chỉnh vị trí của mặt phẳng thành (0, 0, 0) để đảm bảo tính nhất quán.

2. Tạo hệ thống hạt

  • Nhấp chuột phải vào cửa sổ Phân cấp và chọn 'Effects' -> 'Particle System'.
  • Đổi tên Hệ thống hạt thành "ParticlePainter".
  • Đặt đối tượng "ParticlePainter" phía trên mặt phẳng một chút.

3. Cấu hình hệ thống hạt để vẽ

  • Với đối tượng "ParticlePainter" được chọn, hãy điều hướng đến cửa sổ Thanh tra.

Trong 'Particle System', thực hiện các thay đổi sau:

  • 'Duration': 1
  • 'Start Lifetime': 'Infinity' (điều này đảm bảo các hạt không chết)
  • 'Start Speed': 0 (các hạt không nên di chuyển)
  • 'Emission' -> 'Rate over Time': 100 (điều chỉnh theo sở thích về mật độ sơn)
  • Vào 'Shape' và chọn "Circle". Điều chỉnh bán kính thành giá trị nhỏ hơn để kiểm soát kích thước cọ vẽ.
  • Trong 'Renderer', thay đổi Vật liệu thành vật liệu hoặc màu tùy chỉnh để thể hiện lớp sơn.

4. Viết kịch bản cho thợ sơn

Bây giờ, script sẽ được thêm vào để kiểm soát thời điểm và vị trí các hạt được phát ra.

  • Nhấp chuột phải vào cửa sổ Nội dung, chọn 'Create' -> 'C# Script' và đặt tên là "ParticlePainterScript".
  • Nhấp đúp vào tập lệnh để mở tập lệnh trong trình chỉnh sửa, dán mã bên dưới vào bên trong tập lệnh, sau đó lưu tập lệnh:
using UnityEngine;

public class ParticlePainterScript : MonoBehaviour
{
    private ParticleSystem painterParticles;
    private bool canPaint = false;

    void Start()
    {
        painterParticles = GetComponent<ParticleSystem>();
    }

    void Update()
    {
        PaintMechanic();
    }

    void PaintMechanic()
    {
        if (Input.GetMouseButton(0))
        {
            if (!canPaint) 
            {
                painterParticles.Play();
                canPaint = true;
            }
        }
        else
        {
            painterParticles.Stop();
            canPaint = false;
        }

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        
        if (Physics.Raycast(ray, out hit))
        {
            transform.position = hit.point;
        }
    }
}
  • Đính kèm "ParticlePainterScript" vào đối tượng "ParticlePainter" trong trình chỉnh sửa Unity.

5. Điều chỉnh máy ảnh

Điều chỉnh camera chính để nhìn từ trên xuống:

  • Đặt Vị trí thành (0, 10, 0) và Xoay thành (90, 0, 0).

6. Kiểm tra cảnh

  • Nhấp vào nút Play.
  • Giữ nút chuột trái và di chuyển con trỏ trên mặt phẳng. Các hạt sẽ được phát ra, tạo ra hiệu ứng giống như sơn.

Hỏi & Đáp:

  1. Tại sao nên sử dụng Hệ thống hạt để vẽ thay vì các phương pháp vẽ kết cấu truyền thống?: Hệ thống hạt cung cấp phản hồi động theo thời gian thực, có khả năng tùy chỉnh cao và có thể cung cấp các hiệu ứng hình ảnh độc đáo. Ngoài ra, nó có thể thân thiện hơn với hiệu suất trong một số trường hợp, đặc biệt là đối với các hiệu ứng sơn tạm thời.
  2. Có thể sơn nhiều màu bằng phương pháp này không?: Có, bằng cách tạo nhiều hệ thống hạt hoặc điều chỉnh màu hạt theo thời gian, có thể đạt được nhiều hiệu ứng màu khác nhau.
  3. Làm cách nào để thay đổi kích thước cọ vẽ một cách linh hoạt?: Bằng cách điều chỉnh giá trị 'radius' của hình dạng của Hệ thống hạt trong thời gian thực thông qua tập lệnh, kích thước cọ vẽ có thể được thay đổi linh hoạt.

Phần kết luận

Khi hướng dẫn này kết thúc, một ứng dụng mới và độc đáo của Unity Hệ thống hạt đã được khám phá. Dù là về cơ chế trò chơi, công cụ nghệ thuật hay trải nghiệm đổi mới, Unity vẫn tiếp tục gây ngạc nhiên với khả năng linh hoạt của nó.

Bài viết được đề xuất
Triển khai hiệu ứng hạt trong Unity
Tạo hiệu ứng bọt máy rửa áp lực trong Unity
Làm việc với hệ thống giao diện người dùng của Unity
Tạo Menu tạm dừng trong Unity
Tạo mô phỏng chuyến bay trong Unity
Tạo hiệu ứng bộ lọc băng VHS trong Unity
Cách thêm Zombie vào trò chơi Unity