Skip to content

🎮 Cách làm Game 2D bằng ChatGPT, viết Prompt hiệu quả (có ví dụ chi tiết)

✅ 1. Chia nhỏ yêu cầu – tạo module riêng biệt cho từng chức năng

Prompt gợi ý:

Viết script Unity C# để điều khiển nhân vật 2D di chuyển qua lại bằng phím A/D. 
Đặt tên script là PlayerMovement.cs, viết theo hướng component, không dùng code trong GameManager.

Phản hồi ChatGPT sẽ tạo dạng:

// PlayerMovement.cs
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f;

    void Update()
    {
        float moveX = Input.GetAxisRaw("Horizontal");
        transform.Translate(Vector2.right * moveX * moveSpeed * Time.deltaTime);
    }
}

📌 Tốt vì: code rõ ràng, module riêng, dễ gắn vào prefab Player.

✅ 2. Gom vào thư mục riêng – dễ tổ chức và tái sử dụng

Prompt gợi ý:

Hãy tạo các thư mục theo cấu trúc: Scripts/Player, Scripts/Enemies, Scripts/UI và sắp xếp script vào đúng thư mục.

Ví dụ cấu trúc:

  • PlayerMovement.cs ➜ Scripts/Player/
  • EnemyAI.cs ➜ Scripts/Enemies/
  • HealthBar.cs ➜ Scripts/UI/

✅ 3. Tập trung vào kết quả mong muốn, tránh nói mơ hồ

Prompt mơ hồ (không nên):

Làm game 2D nhân vật có thể chạy và nhảy

Prompt tốt hơn:

Viết 2 script Unity C#:
1. PlayerMovement.cs điều khiển nhân vật đi trái/phải bằng A/D
2. PlayerJump.cs cho phép nhảy khi nhấn Space, chỉ nhảy khi đang đứng trên mặt đất

Kết quả mong đợi:

// PlayerJump.cs
using UnityEngine;

public class PlayerJump : MonoBehaviour
{
    public float jumpForce = 7f;
    private Rigidbody2D rb;
    public LayerMask groundLayer;
    public Transform groundCheck;
    private float checkRadius = 0.2f;

    void Start() => rb = GetComponent();

    void Update()
    {
        bool isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, groundLayer);
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
        }
    }
}

✅ 4. Đưa ví dụ cụ thể – ChatGPT sinh code chính xác hơn

Prompt có ví dụ:

Tiếp tục phần code sau để nhân vật có thể nhảy bằng Space. Dùng Rigidbody2D:
void Update() {
    float horizontal = Input.GetAxis("Horizontal");
    transform.Translate(Vector2.right * horizontal * speed * Time.deltaTime);
}

Kết quả:

void Update() {
    float horizontal = Input.GetAxis("Horizontal");
    transform.Translate(Vector2.right * horizontal * speed * Time.deltaTime);

    if (Input.GetKeyDown(KeyCode.Space) && isGrounded) {
        rb.velocity = new Vector2(rb.velocity.x, jumpForce);
    }
}

✅ 5. Dùng markdown – giúp dễ đọc, dễ copy

Prompt:

Viết hướng dẫn dạng markdown về cách tạo nhân vật 2D có thể nhảy, có ảnh minh họa Inspector

Ví dụ ChatGPT trả về:

### Hướng dẫn thêm nhảy cho nhân vật 2D
1. Tạo empty GroundCheck dưới chân Player.
2. Gắn script PlayerJump.cs.
3. Trong Inspector:
- Gán Rigidbody2D
- Chọn Layer Ground
- Gán vị trí groundCheck

✅ 6. Kiểm tra lại – dùng prompt để sửa lỗi

Prompt sau khi chạy thử bị lỗi:

Script nhảy không hoạt động, có thể vì không xác định đúng Ground. Sửa giúp với.

Gợi ý của ChatGPT: Hãy chắc chắn rằng Ground object nằm trong layer Ground, và Player có một groundCheck đặt gần chân. Ngoài ra cần đảm bảo Rigidbody2D đang hoạt động.

✅ 7. Lập kế hoạch tổng thể – làm từ tổng quan đến chi tiết

Prompt gợi ý:

Tạo kế hoạch chi tiết cho game 2D platformer gồm:
- Nhân vật
- Vật phẩm
- Kẻ địch
- Màn chơi
- Thắng/thua

Ví dụ kế hoạch:

  • Nhân vật: di chuyển trái/phải, nhảy, animation
  • Vật phẩm: đồng xu, máu, nhặt và lưu điểm
  • Kẻ địch: AI đơn giản, gây sát thương
  • Màn chơi: dùng Tilemap, nhiều màn
  • Thắng/thua: Win khi đến đích, Lose khi rơi hố

Leave a Reply

Your email address will not be published. Required fields are marked *