Ngày nay, tôi đang cố gắng tạo một bộ điều khiển nhân vật 2D với sự thống nhất (sử dụng phisics). Tôi còn khá mới với các động cơ vật lý và thực sự rất khó để có được sự kiểm soát mà tôi đang tìm kiếm. Tôi sẽ rất vui nếu có ai có thể đề xuất giải pháp cho một vấn đề tôi đang tìm kiếm:
Đây là FixedUpdate của tôi ngay bây giờ:
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);
}
Tôi đang cố gắng ở đây để di chuyển cơ thể cứng nhắc áp dụng trọng lực và lực tuyến tính cho trái và phải. Tôi đã thiết lập một vật liệu vật lý làm cho không bị nảy và ma sát 0 khi di chuyển và 1 ma sát khi đứng yên. Vấn đề chính là tôi có máy va chạm có độ dốc và vận tốc thay đổi từ đi lên (chậm hơn), xuống dốc (nhanh hơn) và đi trên máy va chạm thẳng (bình thường). Làm thế nào điều này có thể được sửa chữa? Như bạn thấy tôi đang áp dụng tất cả các vận tốc tương tự cho trục x.
Đối với người chơi, tôi đã thiết lập nó với một quả cầu ở vị trí chân là người cứng nhắc mà tôi đang áp dụng lực lượng.
Bất kỳ lời khuyên nào khác có thể làm cho cuộc sống của tôi dễ dàng hơn với điều này đều được hoan nghênh :).
PD Trong khi về nhà tôi nhận thấy tôi có thể giải quyết điều này bằng cách sử dụng một lực không đổi song song với bề mặt người chơi đang đi bộ, nhưng không biết liệu đó có phải là phương pháp tốt nhất không.