Cara Membuat Pergerakan Mouse yang Halus di Unity

Pergerakan mouse yang halus merupakan aspek penting dalam pengembangan game yang membantu meningkatkan pengalaman pengguna secara keseluruhan. Dengan menerapkan pergerakan mouse yang halus, Anda dapat membuat kamera atau kontrol pemain game terasa lebih lancar dan responsif, sehingga menghasilkan pengalaman bermain yang halus dan mendalam. Dalam tutorial ini, kami akan memandu Anda tentang cara mengatur pergerakan mouse yang halus di Unity, dengan petunjuk langkah demi langkah dan contoh kode dalam C#. Kami juga akan membahas kemungkinan alasan mengapa Anda ingin menerapkan fitur ini dalam game Anda.

Mengapa Menerapkan Pergerakan Mouse yang Halus?

Berikut adalah beberapa alasan mengapa pergerakan mouse yang halus penting dalam game:

  • Pengalaman Pengguna yang Lebih Baik: Kontrol yang lancar membantu pemain merasa lebih mengendalikan tindakan mereka, yang penting untuk pengalaman bermain yang mendalam, khususnya dalam game sudut pandang orang pertama atau orang ketiga.
  • Presisi yang Ditingkatkan: Penyetelan pergerakan mouse yang lebih baik memungkinkan kontrol kamera yang lebih presisi, yang sangat penting dalam game tembak-menembak atau game apa pun yang melibatkan bidikan yang cermat.
  • Tampilan dan Nuansa yang Halus: Membuat permainan terasa lebih profesional dan halus, yang penting untuk mempertahankan pemain dan membuat mereka tetap terlibat.
  • Mengurangi Mabuk Perjalanan: Pergerakan kamera yang goyang atau terlalu sensitif dapat menyebabkan ketidaknyamanan atau mabuk perjalanan bagi pemain. Pergerakan mouse yang halus dapat membantu mengurangi risiko ini.

Mengatur Gerakan Mouse yang Lancar di Unity

Mari kita lihat langkah-langkah untuk membuat pergerakan mouse menjadi halus di Unity.

Langkah 1: Buat Skrip Baru

Pertama, buat skrip C# baru yang akan mengendalikan gerakan tetikus. Anda dapat memberi nama skrip ini seperti MouseLook.

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    private float xRotation = 0f;

    void Start()
    {
        // Lock the cursor in the middle of the screen
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get mouse movement input
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        // Invert the Y-axis for a more natural control feel
        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        // Rotate the camera around the X-axis (up and down)
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

        // Rotate the player object around the Y-axis (left and right)
        playerBody.Rotate(Vector3.up * mouseX);
    }
}

Dalam kode ini:

  • mouseSensitivity mengontrol seberapa sensitif masukan mouse.
  • playerBody mewakili transformasi pemain, yang berputar sepanjang sumbu Y untuk pergerakan mouse horizontal.
  • Variabel xRotation menyimpan rotasi vertikal saat ini (atas dan bawah), dan dijepit antara -90 dan 90 derajat untuk mencegah rotasi berlebih.
  • Kami mengunci kursor mouse di tengah layar untuk menghindari kursor bergerak keluar jendela permainan.

Langkah 2: Lampirkan Skrip ke Kamera

Sekarang skripnya sudah siap, masuk ke adegan Unity Anda dan lampirkan skrip MouseLook ke kamera Anda (misalnya, objek Kamera Utama).

Lalu, tetapkan bidang playerBody dengan menyeret objek pemain (biasanya pengendali karakter atau objek permainan kosong yang mewakili pemain) ke dalam bidang Player Body skrip di Inspektur.

Langkah 3: Sesuaikan Sensitivitas Mouse

Anda dapat bereksperimen dengan nilai mouseSensitivity untuk mencapai tingkat kontrol yang Anda inginkan. Titik awal yang baik adalah 100, tetapi Anda dapat menyesuaikannya lebih tinggi atau lebih rendah tergantung pada tingkat presisi yang Anda inginkan.

Langkah 4: Menangani Kelancaran Input

Untuk gerakan yang lebih halus, Anda dapat menerapkan interpolasi pada nilai masukan tetikus. Ini memastikan bahwa kamera bertransisi dengan halus di antara setiap bingkai, alih-alih melompat dari satu posisi ke posisi berikutnya. Berikut ini contoh cara menerapkannya:

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    private float xRotation = 0f;
    private Vector2 smoothInputVelocity;
    public float smoothTime = 0.1f;
    private Vector2 currentMouseDelta;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get raw mouse input
        Vector2 targetMouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y")) * mouseSensitivity;

        // Smooth the mouse input
        currentMouseDelta = Vector2.SmoothDamp(currentMouseDelta, targetMouseDelta, ref smoothInputVelocity, smoothTime);

        xRotation -= currentMouseDelta.y * Time.deltaTime;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        playerBody.Rotate(Vector3.up * currentMouseDelta.x * Time.deltaTime);
    }
}

Versi yang diperbarui ini memperkenalkan penghalusan menggunakan Vector2.SmoothDamp. Variabel smoothTime mengontrol seberapa halus transisi tersebut. Nilai yang lebih rendah membuat gerakan lebih responsif, sementara nilai yang lebih tinggi membuatnya lebih lambat dan lebih bertahap.

Langkah 5: Pengujian dan Penyempurnaan

Setelah skripnya siap, uji permainan dan sesuaikan nilai sensitivitas dan penghalusan berdasarkan seberapa halus gerakan tetikus yang Anda inginkan. Anda juga dapat menyesuaikan sudut penjepitan untuk memberikan lebih banyak atau lebih sedikit kebebasan gerakan kamera.

Kesimpulan

Dengan menerapkan gerakan mouse yang halus dalam proyek Unity, Anda dapat meningkatkan pengalaman bermain secara signifikan dengan menawarkan kontrol kamera yang presisi dan lancar. Tutorial ini memandu Anda dalam menyiapkan sistem gerakan mouse dasar dan menyempurnakannya dengan teknik penghalusan.