요즘 나는 유니티가있는 2D 캐릭터 컨트롤러를 만들려고합니다 (물리학 사용). 나는 물리 엔진에 익숙하지 않아서 내가 원하는 컨트롤 느낌을 얻는 것이 정말 어렵습니다. 내가 찾은 문제에 대한 해결책을 제안 할 수 있다면 정말 기쁠 것입니다.
이것은 지금 내 고정 업데이트입니다.
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);
}
여기에 중력과 선형 힘을 왼쪽과 오른쪽으로 적용하여 강체를 움직이려고합니다. 나는 움직일 때 튀지 않고 마찰이없고 정지 상태에서 1 마찰이 발생하는 물리 재질을 설정했습니다. 주요 문제는 경사가있는 충돌체가 있고 속도가 올라가고 (느리게) 기울기가 내려 가고 (빠르게) 직선 충돌체를 걷는 것입니다 (정상). 이 문제를 어떻게 해결할 수 있습니까? 보시다시피 x 축에 대해 항상 같은 속도를 적용하고 있습니다.
플레이어의 경우, 내가 적용하는 강체 인 발 위치에 구를 설정했습니다.
이것으로 내 인생을 더 쉽게 만들 수있는 다른 팁은 환영합니다 :).
PD 집에 돌아 오는 동안 나는 플레이어가 걷고있는 표면에 일정한 힘을 가하여이 문제를 해결할 수 있음을 알았지 만 그것이 최선의 방법인지는 모른다.