✅ 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ố