[Unity 게임프로젝트] FPS게임<오버워치> - 캐릭터 앉기 모드 수정

2024. 6. 11. 20:43· Unity/Unity FPS게임 프로젝트(오버워치라이크)

 

현재 솔져의 하반신을 아바타마스크를 사용하여 걷기, 앉기, 점프 등에 대한 애니메이션이
상체와 별개로 실행되는 작업을 했다.

그러나 앉을 때 캐릭터는 앉는 모션을 취하지만 하반신만 작동되어 캐릭터가 공중에 떠있는 상태가 된다.
그래서 기존에 작업했던 코드를 일부 수정하였다.

원래 좌측 컨트롤키를 누르면 유닛카메라의 로컬포지션 y값이 앉기모드의 y값으로 바뀌게 만들었다.
이젠 그럴 필요없이 해당 캐릭터의 포지션 y값을 앉기모드 y값으로 바꿔주었다.

카메라는 고정되어있고, 캐릭터의 포지션 y값만 변경되어
앉기 애니메이션이 실행될 때 더이상 캐릭터는 공중에 떠있지 않으며,
카메라와 캐릭터의 포지션y값이 따로 설정되지 않게 되었다.

[UnitController.cs]

    [Header("Unit Y Pos")]
    // 앉기 y값은 컴포넌트창에서 따로 설정해 줌(0.5).
    public float crouchPosY;
    public float originPosY;
    public float currCrouchPosY;
    
    void Start()
    {
        // 기존의 카메라 로컬포지션y -> 캐릭터 포지션y
    	originPosY = gameObject.transform.position.y;
        currCrouchPosY = originPosY;
    }
    
    void Crouch()
    {
        if (Input.GetKey(KeyCode.LeftControl))
        {
            isCrouch = true;
            
            currSpeed = crouchSpeed;
            currCrouchPosY = crouchPosY;

            unitAnimController.IsCrouch(true);

            StartCoroutine("CrouchRoutine");
        }
        else if (Input.GetKeyUp(KeyCode.LeftControl))
        {
            isCrouch = false;

            currSpeed = walkSpeed;
            currCrouchPosY = originPosY;

            unitAnimController.IsCrouch(false);

            StartCoroutine("CrouchRoutine");
        }
    }
    IEnumerator CrouchRoutine()
    {
        float posX = gameObject.transform.position.x;
        float posY = gameObject.transform.position.y;
        float posZ = gameObject.transform.position.z;

        while (posY != currCrouchPosY)
        {
            posY = Mathf.Lerp(posY, currCrouchPosY, 0.5f);
            gameObject.transform.position = new Vector3(posX, posY, posZ);

            yield return null;
        }

        gameObject.transform.position = new Vector3(posX, currCrouchPosY, posZ);
    }

 

https://youtu.be/AT1W3Q1VzG0

 

ps. 원하는대로 포지션값이 바뀐다. 하지만 Lerp에 대한 문제가 생겼다. 아무리 Lerp의 속도를 크게 바꿔보아도 속도가 변하질 않는다... 왜 그럴까...?? 


'Unity > Unity FPS게임 프로젝트(오버워치라이크)' 카테고리의 다른 글

[Unity 게임프로젝트] FPS게임<오버워치> - 훈련장 맵 구현(미완성)  (0) 2024.06.13
[Unity 게임프로젝트] FPS게임<오버워치> - 솔져 생체장 스킬 기능 완성  (0) 2024.06.10
[Unity 게임프로젝트] FPS게임<오버워치>(6) - 캐릭터 애니메이션 조정(미완성)  (0) 2024.05.29
[Unity 게임프로젝트] FPS게임<오버워치>(5-2) - 캐릭터 스킬 기능 활성화(미완성)  (0) 2024.05.27
[Untiy 게임프로젝트] FPS 게임<오버워치>(5) - 캐릭터 스킬 기능  (0) 2024.05.23
'Unity/Unity FPS게임 프로젝트(오버워치라이크)' 카테고리의 다른 글
  • [Unity 게임프로젝트] FPS게임<오버워치> - 훈련장 맵 구현(미완성)
  • [Unity 게임프로젝트] FPS게임<오버워치> - 솔져 생체장 스킬 기능 완성
  • [Unity 게임프로젝트] FPS게임<오버워치>(6) - 캐릭터 애니메이션 조정(미완성)
  • [Unity 게임프로젝트] FPS게임<오버워치>(5-2) - 캐릭터 스킬 기능 활성화(미완성)
ForMan_
ForMan_
C# 언어로 프로그래머스 문제를 풀이하고, Unity 엔진으로 게임을 개발하며, 자료구조를 공부하는 과정을 반복문처럼 꾸준히 탐구하고 공유하는 '반복해서 노력하는 남자, ForMan'의 블로그입니다.
반복해서 노력하는 남자, ForManC# 언어로 프로그래머스 문제를 풀이하고, Unity 엔진으로 게임을 개발하며, 자료구조를 공부하는 과정을 반복문처럼 꾸준히 탐구하고 공유하는 '반복해서 노력하는 남자, ForMan'의 블로그입니다.
ForMan_
반복해서 노력하는 남자, ForMan
ForMan_
전체
오늘
어제
  • 분류 전체보기
    • C#
      • 프로그래머스 코딩 문제 풀이
      • 자료구조 이해하기
      • 알고리즘 기초 익히기
    • Unity
      • Unity 디자인 패턴
      • Unity 타워디펜스게임 프로젝트
      • Unity 물리기반 Merge게임 프로젝트(수박라..
      • Unity FPS게임 프로젝트(오버워치라이크)
    • UI
      • 젠레스존제로 UI작업 시작
      • 젠레스존제로 UI 이펙트 작업
      • 젠레스존제로 UI 사운드 작업
      • 젠레스존제로 UI 스크롤뷰 작업(메뉴창)

블로그 메뉴

  • 홈
  • 방명록
  • 태그

최근 글

최근 댓글

인기 글

태그

  • Unity
  • 수박게임
  • 동적프로그래밍
  • 오버워치
  • 코딩테스트
  • forman
  • 머쓱이
  • 유니티게임프로젝트
  • 게임프로젝트
  • 오름차순
  • 과일합치기
  • 유니티게임
  • 완전탐색
  • 타워디펜스게임
  • 유니티
  • c#
  • 프로그래머스
  • 오버워치만들기
  • 유니티디자인패턴
  • 정렬알고리즘
Thanks for Skin
hELLO · Designed By 정상우.v4.2.2
ForMan_
[Unity 게임프로젝트] FPS게임<오버워치> - 캐릭터 앉기 모드 수정
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.