วันนี้ฉันพยายามสร้างตัวควบคุม 2D ด้วยความสามัคคี (ใช้ phisics) ฉันค่อนข้างใหม่สำหรับเอนจิ้นฟิสิกส์และมันยากที่จะควบคุมความรู้สึกที่ฉันกำลังมองหา ฉันจะมีความสุขมากถ้าใครสามารถแนะนำวิธีแก้ปัญหาที่ฉันพบ:
นี่คือ FixedUpdate ของฉันตอนนี้:
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);
}
ฉันพยายามที่นี่เพื่อย้ายร่างกายที่แข็งเกร็งโดยใช้แรงโน้มถ่วงและแรงเชิงเส้นสำหรับซ้ายและขวา ฉันตั้งค่าวัสดุทางฟิสิกส์ที่ทำให้ไม่มีการกระดอนและแรงเสียดทาน 0 เมื่อเคลื่อนที่และ 1 แรงเสียดทานพร้อมขาตั้ง ปัญหาหลักคือฉันมี colliders ที่มีความลาดชันและความเร็วเปลี่ยนจากการขึ้น (ช้ากว่า), ลงไปตามทางลาด (เร็วกว่า) และเดินบน collider ตรง (ปกติ) สิ่งนี้สามารถแก้ไขได้อย่างไร? อย่างที่คุณเห็นฉันกำลังใช้ความเร็วเดียวกันกับแกน x
สำหรับผู้เล่นฉันได้ติดตั้งมันด้วยทรงกลมที่ตำแหน่งเท้านั่นคือความแข็งแกร่งที่ฉันใช้ในการบังคับ
ยินดีต้อนรับเคล็ดลับอื่น ๆ ที่ทำให้ชีวิตของฉันง่ายขึ้นด้วย :)
PD ขณะกลับมาถึงบ้านฉันสังเกตว่าฉันสามารถแก้ปัญหานี้โดยใช้แรงคงที่ขนานกับพื้นผิวที่ผู้เล่นกำลังเดิน แต่ไม่รู้ว่ามันเป็นวิธีที่ดีที่สุดหรือไม่