Hari ini saya mencoba membuat pengontrol karakter 2D dengan kesatuan (menggunakan phisics). Saya cukup baru di mesin fisik dan sangat sulit untuk mendapatkan kontrol yang saya cari. Saya akan sangat senang jika ada yang bisa menyarankan solusi untuk masalah yang saya temukan:
Ini adalah FixedUpdate saya sekarang:
public void FixedUpdate()
{
Vector3 v=new Vector3(0,-10000*Time.fixedDeltaTime,0);
_body.AddForce(v);
v.y=0;
if(state(MovementState.Left))
{
v.x=-_walkSpeed*Time.fixedDeltaTime+v.x;
if(Mathf.Abs(v.x)>_maxWalkSpeed) v.x=-_maxWalkSpeed;
}
else if(state(MovementState.Right))
{
v.x= _walkSpeed*Time.fixedDeltaTime+v.x;
if(Mathf.Abs(v.x)>_maxWalkSpeed) v.x=_maxWalkSpeed;
}
_body.velocity=v;
Debug.Log("Velocity: "+_body.velocity);
}
Saya mencoba di sini untuk hanya menggerakkan tubuh kaku yang menerapkan gravitasi dan gaya linear untuk kiri dan kanan. Saya telah menyiapkan bahan fisik yang tidak membuat pantulan dan 0 gesekan saat bergerak dan 1 gesekan dengan diam. Masalah utama adalah bahwa saya memiliki colliders dengan lereng dan perubahan kecepatan dari naik (lebih lambat), menuruni lereng (lebih cepat) dan berjalan di collider lurus (normal). Bagaimana ini bisa diperbaiki? Seperti yang Anda lihat saya menerapkan allways kecepatan yang sama untuk sumbu x.
Untuk pemain saya memilikinya setup dengan posisi bola di kaki yang merupakan benda tegar yang saya lamar.
Tip lain yang bisa membuat hidup saya lebih mudah dengan ini disambut :).
PD Ketika pulang, saya perhatikan saya bisa menyelesaikan ini dengan menerapkan gaya konstan yang paralel ke permukaan pemain berjalan, tetapi tidak tahu apakah itu metode terbaik.