본문 바로가기
개발일지/게임개발

[유니티 게임 개발] 동방을 걷다 프로젝트 3 - 2024 05 13(PM 04:00) 플레이어 애니메이션 추가

by 라이티아 2024. 5. 13.

熱異常 / いよわ

특유의 전자음이 멋지다

 

 

 

오늘은 저번글에서 만든 방향 전환에 맞춰서 플레이어 스프라이트를 적절히 배치해 보자

?????????????????????????????????????????????????????????????????

????????????????????????????????????????????????????????

 

왜 작업물이 초기화 됬지???

 

????????????

WTF?????

 

빠르게 다시 복구 완료

 

하는김에 이전에 생각해둔 호감표 표시 UI도 넣어주자

 

public TextMeshProUGUI Text;
    // Start is called before the first frame update
    void Start()
    {
       
    }

    // Update is called once per frame
    void Update()
    {
        Text.text = "호감도 : " + NPCManager.Instance.like;
    }

이런 식으로 "호감도 : 숫자"였던 것을

void Update()
    {
        Text.text = NPCManager.Instance.like.ToString();
    }

숫자만 나오게 한다

 

이제 호감도가 하트 UI안에 숫자로 표시된다

 

좀 더 직관성이 좋다고 생각한다

 

이제 플레이어 애니메이션을 설정하러 가자

 

우선은 상하좌우 4방향에 맞춰서 애니메이터와 애니메이션을 셋팅해준다

 

이 애니메이션들은 move_check에 따라 다른 애니메이션으로 전환된다

 

 

College/GamePrograming/Touhou_game/touhou_script/Player_move.cs at main · NoNamed02/College

Contribute to NoNamed02/College development by creating an account on GitHub.

github.com

애니메이션 사용법은 이전에 내가 작성한 슈팅게임 애니메이션 사용법을 참고하면 된다

private Animator animator;

애니메이터 설정 후

animator = GetComponent<Animator>();

컴포넌트를 가져온다

if(pos_dir == 0)
            animator.SetInteger("move_check", 0);
            newPosition.y += distanceMoved;
        if(pos_dir == 1)
            animator.SetInteger("move_check", 1);
            newPosition.x += distanceMoved;
        if(pos_dir == 2)
            animator.SetInteger("move_check", 2);
            newPosition.y -= distanceMoved;
        if(pos_dir == 3)
            animator.SetInteger("move_check", 3);
            newPosition.x -= distanceMoved;

이제 setinteger을 사용하여 이동 매커니즘 사이에 애니메이션을 변환하는 변수를 조절한다

 

의도한대로 움직인다, 근데 애니메이션은 칼같이 전환되지 않는다

이럴때는 transition의 has exit time를 off해주자

원하는 형태로 움직인다

근데 vector는 왜 또 적용이 안되는거지;;

 

 

..........................

...................

...........

....

.

 

if(pos_dir == 0)
            animator.SetInteger("move_check", 0);
            newPosition.y += distanceMoved;
        if(pos_dir == 1)
            animator.SetInteger("move_check", 1);
            newPosition.x += distanceMoved;
        if(pos_dir == 2)
            animator.SetInteger("move_check", 2);
            newPosition.y -= distanceMoved;
        if(pos_dir == 3)
            animator.SetInteger("move_check", 3);
            newPosition.x -= distanceMoved;

나는 바보입니다

당연히 if문을 {}로 엮지 않았으니 작동하지 않는 것 이다

if(pos_dir == 0){
            animator.SetInteger("move_check", 0);
            newPosition.y += distanceMoved;}
        if(pos_dir == 1){
            animator.SetInteger("move_check", 1);
            newPosition.x += distanceMoved;}
        if(pos_dir == 2){
            animator.SetInteger("move_check", 2);
            newPosition.y -= distanceMoved;}
        if(pos_dir == 3){
            animator.SetInteger("move_check", 3);
            newPosition.x -= distanceMoved;}
        transform.position = newPosition;

다시 엮고 테스트

 

잘움직인다