Halo sobat developer game, buat sobat yang mungkin sedikit kesusahan bagaimana cara membuat script agar kamera mengikuti arah gerak objek, kali ini saya akan memberikan potongan kode yang mungkin akan sangat bermanfaat bagi kalian para developer game. Sebelum saya bagikan script nya ada baiknya kita pahami dulu cara gerak kamera yang biasanya ada pada game.
Pada beberapa game yang ada, pergerakan kamera ada yang normal, yaitu benar-benar mengikuti kemana arah objek bergerak, namun untuk pergerakan yang satu ini sedikit kurang realis karena pergerakan kamera benar-benar sangat kaku. Saya ingat dulu ketika saya baru pertama kali belajar unity dan belajar mengimplementasikan pergerakan kamera yang mengikuti arah objek, ketika itu saya terlalu bermain logika. Hal yang saya lakukan adalah kamera yang ada langsung saya drag n drop ke objek yang menjadi child dari objek tersebut, dan resikonya yaitu bagian environment pada game lah yang kesanya bergerak -__-, jika sobat ingin mencoba kegagalan ini silahkan mencobanya karena sangat mudah dan praktis (cmiww). Akhirnya setelah mencari tahu dan bertanya pada beberapa forum unity, sangat dianjurkan kamera untuk diberikan semacam efek perlambatan ketika mengikuti arah gerak dari objek agar terkesan lebih realis. Tanpa basa-basi lagi berikut saya share script bagaimana caranya kamera bisa mengikuti gerakan objek secara smooth atau halus bahasa Indonesianya. :)
using UnityEngine;
using System.Collections;
public class cameraFollowObject : MonoBehaviour {
public float dampTime = 0.5f;
private Vector3 velocity = Vector3.zero;
public Transform target;
// Update is called once per frame
void Update ()
{
if (target)
{
Vector3 point = camera.WorldToViewportPoint(target.position);
Vector3 delta = target.position - camera.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, point.z)); //(new Vector3(0.5, 0.5, point.z));
Vector3 destination = transform.position + delta;
transform.position = Vector3.SmoothDamp(transform.position, destination, ref velocity, dampTime);
}
}
}
Kondisi yang saya gunakan adalah ketika target ada, maka script akan menjalankan fungsi kamera yang mana kamera akan mengikuti gerakan koordinat x dan y objek (nb: usahakan kita sudah memasukkan target/object nya, karena jika kita tidak memasukkan objeknya maka yang terjadi adalah script error). Variabel dampTime digunakan untuk mengukur kecepatan kamera mengikuti objek, semakin besar nilai dampTime nya maka semakin lambat pula kamera mengikuti gerakan objek.
Script tentang bagaimana kamera mengikuti gerakan objek ada banyak jenisnya, jika script di atas masih kurang memuaskan dan kurang memenuhi kebutuhan sobat, silahkan bereksperimen dan mencari tahu sendiri di beberapa forum Unity Stackoverflow dan semacamnya. Selamat mencoba, jangan lupa klik tombol "Like" ya, selamat berbagi ^_^
keren bang, workit
ReplyDelete