Unity - 파쿠르 첫 구현

2025. 7. 23. 15:08·유니티 개발/계륵

이번에는 유니티에서 파쿠르를 어떻게 구현 하였는지 설명 해보겠습니다.

 

먼저 파쿠르는 언리얼은 기본 기능에 가깝지만 유니티에서는 직접 구해야 합니다.

https://www.mixamo.com/

 

Mixamo

 

www.mixamo.com

여기에서 애니메이션을 구하거나 에셋 스토어에서 구매를 하시면 됩니다.

 

이제 애니메이션 컨트롤러에 넣어주고 연결을 합니다.

하나는 Jumping Over 애니메이션은 한쪽이 연결 안되어 있지만 다른방식으로 실행 하였습니다.

 

이제 코드를 봅시다.

//캐릭터 컨트롤러
CharacterController cc;
Rigidbody rb;
public bool pakrour = false;
//업데이트
RaycastHit[] hits;
Debug.DrawRay(LineTarget.transform.position, transform.forward * line, Color.yellow);
hits = Physics.RaycastAll(LineTarget.transform.position, transform.forward, line);

먼저 레이케스트를 이용하여 파쿠르가 가능한 벽인지 아닌지 확인을 합니다

 

for (int i = 0; i < hits.Length; i++)
{
    //레이저를 통과한 오브젝트 저장
    RaycastHit hit = hits[i];
    //tag에 end가 붙은 오브젝트의 값을 가져옴
    if (hit.collider.tag == "End")
    {
        EndPoint = hit.transform.position;
        print(EndPoint);
        pakrour = true;
    }

}

여기에서 파쿠르가 가능한 오브젝트에 충돌을 하면 파쿠르 가능상태로 변경이 됩니다.

 

if (Input.GetButtonDown("Jump") && pakrour && !jump)
{
    cc.enabled = false;  
    Man.GetComponent<ModleScripts>().Root(true);
    //애니메이션 시작
    anim.CrossFade("Jumping Over Into Combat", 0.2f);
    
    StartCoroutine(PakourAttion(0.8f,EndPoint));
}

애니메이션을 시작하는 동시에 코루틴을 실행을 하면 됩니다.

여기에서 anim.CrossFade(애니메이션 이름 , 지연시간) 을 이용하면 애니메이션 컨트롤러에 넣기만

해도 애니메이션을 사용을 할수 있습니다.

 

IEnumerator PakourAttion(float attionTime, Vector3 Point)
{

    //리지드 바디 isKinematic true;
    rb.isKinematic = true;

    //마우스를 고정함
    Cursor.lockState = CursorLockMode.Locked;
    yield return null;
   
    yield return new WaitForSeconds(attionTime);
    //받은값으로 이동
    transform.position = Point;  
    rb.isKinematic = false;
    pakrour = false;
    jump = false;
    cc.enabled = true;

    Man.GetComponent<ModleScripts>().Root(false);

    //마우스를 고정 해제
    Cursor.lockState = CursorLockMode.None;
}

여기에서 isKinematic를 true인 상태로 변경을 하지 않는다면 원래자리로 다시 돌아오게 됩니다.

transform.position을 이동하는 엑션 (단거리 텔레포트 같은) 경우에도 isKinematic를 true 상태에서 position

을 변경해야 원래자리로 다시 돌아 오지 않습니다.

이제 실행을 하면 

 

 

그런대 보면 리지드 바디는 가만이 있고 애니메이션을 이용해 앞으로 가는것처럼 만든 것과 목표위치가 고정이고 한번씩

원래자리로 돌아가거나 애니메이션이 불안정하는 등 많은 문제점이 있습니다. 그렇기 때문에 애니메이션은 앞으로

가는것 처럼 보이고 순간이동을 목표지점 까지 순간이동 방식은 비추천 합니다.

 

이쪽으로 가면 다른 방식으로 구현하였습니다.

https://dove-dove.tistory.com/33

 

티스토리

좀 아는 블로거들의 유용한 이야기, 티스토리. 블로그, 포트폴리오, 웹사이트까지 티스토리에서 나를 표현해 보세요.

www.tistory.com

 

 

'유니티 개발 > 계륵' 카테고리의 다른 글

Unity - 유닛 클릭 이동  (1) 2025.08.05
Unity - 발소리 구현  (0) 2025.08.04
Unity - 파쿠르 수정 버전  (0) 2025.07.24
Unity - 후레쉬 혹은 빛나는 오브젝트 구현  (3) 2025.07.23
Unity - 밤 , 안개  (0) 2025.07.23
'유니티 개발/계륵' 카테고리의 다른 글
  • Unity - 발소리 구현
  • Unity - 파쿠르 수정 버전
  • Unity - 후레쉬 혹은 빛나는 오브젝트 구현
  • Unity - 밤 , 안개
dove-dove
dove-dove
dove-dove 님의 블로그 입니다.
  • dove-dove
    dove-dove 님의 블로그
    dove-dove
  • 전체
    오늘
    어제
    • 분류 전체보기 (38)
      • 유니티 개발 (38)
        • 팀 포트폴리오 - 슈퍼 마리오 (7)
        • 사이드 뷰 게임 (22)
        • 계륵 (8)
        • 깃 주소 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dove-dove
Unity - 파쿠르 첫 구현
상단으로

티스토리툴바