Trang chủ » Blog » Kỹ năng xử lý input trong game với C#

Kỹ năng xử lý input trong game với C#

bởi CodeGym | 23/07/2024 09:37 | Blog

Trong việc phát triển trò chơi, kỹ năng xử lý input là một phần không thể thiếu. Với C#, việc điều khiển các sự kiện từ bàn phím, chuột hay bộ điều khiển trở nên dễ dàng hơn. Bài viết này sẽ khám phá cách sử dụng C# để xử lý input trong game.

Tổng quan xử lý input trong game với C#

Sau khi phát triển Game Unity, mục tiêu tiếp theo là phát hành trên nhiều nền tảng. Để tăng cơ hội trải nghiệm người dùng, việc xử lý đầu vào đối với nhiều nền tảng khác nhau là yêu cầu cấp thiết. Input Manager thiết lập các đầu vào từ bàn phím, chuột, bộ điều khiển, màn hình cảm ứng. Những đầu vào này được ánh xạ thành tên các chuỗi văn bản mà con người có thể căn cứ vào đó để lập trình. Nó được viết thành tập lệnh và gắn vào các GameObject.
Sử dụng cài đặt đầu vào để xác định các trục đầu vào và hành động trò chơi cho Project. Tại menu trên cùng: Edit > Project Settings, sau đó chọn danh mục Input.

Xử lý input trong game với C#

Áp dụng Xử lý input trong game với C#

Đoạn mã sau sử dụng cho nút nhảy, khi nhân vật vượt qua các chướng ngại vật:

using UnityEngine;
public class PlayerController : MonoBehaviour
{
    public float jumpForce = 10f;
    public Rigidbody2D rb;
    private bool isGrounded;
    public Transform groundCheck;
    public float groundCheckRadius = 0.2f;
    public LayerMask whatIsGround;
    void Update()
    {
        // Nếu người chơi chạm đất
        isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround);
        // Nếu người chơi chạm đất và nút Jum được nhấn
        if (isGrounded && Input.GetButtonDown("Jump"))
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
        }
    }
}

Với input Manager:

Tất cả các trục mà bạn thiết lập trong cài đặt Input đều phục vụ hai mục đích:

  • Chúng cho phép bạn tham chiếu đầu vào của mình theo tên trục trong tập lệnh.
  • Chúng cho phép người chơi trò chơi của bạn tùy chỉnh các điều khiển theo ý thích của họ.

Trình khởi chạy trò chơi trình bày tất cả các trục được xác định. Trong đó hiển thị tên, mô tả chi tiết và các nút mặc định cho từng trục. Từ đây, họ có thể thay đổi bất kỳ nút nào được xác định trong các trục. Tốt nhất bạn nên viết tập lệnh bằng cách sử dụng các trục thay vì các nút riêng lẻ. Bởi vì, người chơi có thể muốn tùy chỉnh các nút cho trò chơi của bạn.

Đối với người sử dụng sử dụng bàn phím để phát triển sản phẩm, có nhiều cách xử lý đầu vào đa dạng:

Keycode có thể được sử dụng để phát hiện các sự kiện nhấn phím và nhấn phím. Bằng cách sử dụng input.GetKeyDowninput.GetKeyUp

Ví dụ mã dưới đây sử dụng phát hiện từ bàn phím:

using UnityEngine;
public class KeyCodeExample : MonoBehaviour

{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log("Space key was pressed.");
        }
        if (Input.GetKeyUp(KeyCode.Space))
        {
            Debug.Log("Space key was released.");
        }
    }

}

Sự kiện bàn phím cũng có thể được xử lý bởi phương thức OnGUI:

using UnityEngine;
public class KeyCodeOnGUIExample : MonoBehaviour
{
void OnGUI()
{
              if(Event.current.Equals(Event.KeyboardEvent(KeyCode.Space.ToString())))
        {
            Debug.Log("Space key is pressed.");
        }
    }
}

Đối với một số sản phẩm sử dụng đầu vào cảm ứng, đặc biệt là các ứng dụng sử dụng di động:

Ví dụ mã sử dụng phát hiện đầu vào cảm ứng trên thiết bị di động:

public class KeyCodeOnGUIExample : MonoBehaviour
{
    void OnGUI()
    {
        if (Event.current.Equals(Event.KeyboardEvent(KeyCode.Space.ToString())))
        {
            Debug.Log("Space key is pressed.");
        }
    }
}
using UnityEngine;
public class TouchInput : MonoBehaviour
{
    void Update()
    {
        // Nếu có chạm màn hình
        if (Input.touchCount > 0)
        {
            // kiểm tra tất cả các điểm chạm
            for (int i = 0; i < Input.touchCount; i++)
            {
                // Nhận điểm chạm hiện tại
                Touch touch = Input.GetTouch(i);
                // Nếu có chạm điểm bắt đầu
                if (touch.phase == TouchPhase.Began)
                {
                    // hành động khi chạm
                    HandleTouchBegin(touch);
                }
                // Kiểm tra nếu kết thúc chạm
                if (touch.phase == TouchPhase.Ended)
                {
                    // hành động khi kết thúc chạm màn hình
                    HandleTouchEnd(touch);
                }
                // Nếu di chuyển trên màn hình
                if (touch.phase == TouchPhase.Moved)
                {
                    // hành động khi di chuyển
                    HandleTouchMove(touch);
                }
            }
        }
    }
    void HandleTouchBegin(Touch touch)
    {
        // in ra vị trí
        Debug.Log("Touch began at position: " + touch.position);
    } 
    void HandleTouchEnd(Touch touch)
    {
        // in ra vị trí
        Debug.Log("Touch ended at position: " + touch.position);
    } 
    void HandleTouchMove(Touch touch)
    {
       // in ra vị trí
        Debug.Log("Touch moved to position: " + touch.position);
    }
}

Tổng kết

Bây giờ, bạn đã biết cách xử lý với tín hiệu đầu vào trên các thiết bị khác nhau. Bạn cũng đã biết điều hướng đến cài đặt xử lý đầu vào. Chú ý, với mỗi loại đầu vào trên các thiết bị khác nhau sẽ khác nhau. Vì vậy, việc phát triển trên các nền tảng đòi hỏi bạn phải linh hoạt xử lý trên từng nền tảng cụ thể. Việc áp dụng đa dạng các loại đầu vào sẽ tăng khả năng phát hành biên dịch trên các nền tảng khác nhau.

Nếu bạn muốn tìm hiểu về Game Unity một cách bài bản, khóa học lập trình Game Unity tại CodeGym là lựa chọn hoàn hảo cho bạn. Khóa học cung cấp kiến thức từ cơ bản đến nâng cao, giúp bạn nắm vững các kỹ năng phát triển game trên nền tảng Unity.

 

Tags: game

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

13 + 1 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM