안녕하세요
게임 프로그래머를 목표로 하고 있는 학생입니다!
유니티로 joint 기능을 안쓰고 코딩을 하여 로프를 만들고 싶은데
수학과 물리가 부족하여 어떤 물리적인 기술이 들어가는지도 잘 모르겠고...
로프를 로프 답게 만들기가 어려워 2주동안 끙끙되다가 질문글 올리게 됬습니다
우선 구현은 아래의 그림과 같이
로프의 시작지점부터 플레이어의 위치까지의 진자운동을 하여 움직이고
플레이어가 손을 놓았을때 포물선 운동을 이용하여 날아가도록 만들었다고 만들었는데
아래 동영상 처럼 뭔가 이상하게 날아갑니다
단순 구현이 잘못된건지 아니면 포물선 운동을 이용하면 안되는것인지 어디서 부터 잘못된 것인지 잘 모르겠습니다.
우선 이 문제도 문제인데
로프면 로프 답게 출렁출렁(?) 움직여야 하는데 그것을 어떻게 구현을 해야할지, 이건 전혀 감이 안잡힙니다.
+)
로프는 대략 50개 정도의 구슬(sphere)을 연결하여 사용 하고있습니다.
날아가는 코드를 간추리면 아래와 같습니다
void FixedUpdate()
{
~~~ 생략 ~~~
controller.Move(Vector3.right * vx * Time.deltaTime);
moveDir += Physics.gravity * Time.deltaTime;
controller.Move(moveDir * Time.deltaTime);
~~~ 생략 ~~~
}
void getCtrlAuthority()
{
currRadian = currInteraction.GetComponent<RopeCtrl>().getRadian();
float speed = currInteraction.GetComponent<RopeCtrl>().getSpeed();
vx = Mathf.Cos(currRadian * Mathf.Deg2Rad) * (-speed);
vy = Mathf.Sin(currRadian * Mathf.Deg2Rad) * (-speed);
moveDir.y = vy;
}
읽어주셔서 감사합니다