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.