게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
로프(rope) 구현하기 질문있습니다!
게시물ID : programmer_16406짧은주소 복사하기
작성자 : 안녕,그대
추천 : 0
조회수 : 2602회
댓글수 : 6개
등록시간 : 2016/03/28 22:48:05
옵션
  • 본인삭제금지

안녕하세요

게임 프로그래머를 목표로 하고 있는 학생입니다!

유니티로 joint 기능을 안쓰고 코딩을 하여 로프를 만들고 싶은데

수학과 물리가 부족하여 어떤 물리적인 기술이 들어가는지도 잘 모르겠고...

로프를 로프 답게 만들기가 어려워 2주동안 끙끙되다가 질문글 올리게 됬습니다


우선 구현은 아래의 그림과 같이

제목 없음.png



로프의 시작지점부터 플레이어의 위치까지의 진자운동을 하여 움직이고

플레이어가 손을 놓았을때 포물선 운동을 이용하여 날아가도록 만들었다고 만들었는데

아래 동영상 처럼 뭔가 이상하게 날아갑니다




단순 구현이 잘못된건지 아니면 포물선 운동을 이용하면 안되는것인지 어디서 부터 잘못된 것인지 잘 모르겠습니다.

우선 이 문제도 문제인데

로프면 로프 답게 출렁출렁(?) 움직여야 하는데 그것을 어떻게 구현을 해야할지, 이건 전혀 감이 안잡힙니다.



+)
로프는 대략 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;
    }



읽어주셔서 감사합니다

꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호