재미있는 실감미디어

꿈꾸는대로 만들어집니다.

유니티기초[유니티 기초] 24_C# 스크립트 - animator.SetBool()_애니메이션 전환하기

김혜영
2020-04-14
조회수 6175

유튜브 24 - https://youtu.be/9jeO9IviLdk

* 오늘의 배울 내용

animator.SetBool()


안녕하세요~ 매일 30분 유니티 공부하기입니다~ 지난 시간에 캐릭터가 키보드 값에 따라 움직이는것을 구현해보았습니다. 오늘은 키보드 값에 따라 캐릭터가 움직일 때만 달리는 애니메이션을 보여주고, 멈출 경우에는 가만히 서있는, 즉 애니메이션 전환에 대하여 배워보도록 합니다. animator.SetBool( ) 메서드를 활용하여 애니메이션 전환을 하게 됩니다. 자, 그럼 시작할까요?


유니티 매뉴얼을 보면 스크립트 뿐만아니라 작업에 관련된 부분도 상세히 잘 되어 있습니다.

https://docs.unity3d.com/kr/2018.4/Manual/class-Transition.html


애니메이션 전환을 하려면 사전 작업이 필요합니다. 유튜브를 보시는것이 좀 더 이해가 잘 될것입니다. Animator 패널에서 +를 눌러 Bool 타입의 매개변수를 추가합니다. 체크표시를 해제하여 처음에는 값이 false가 되도록 했습니다.  여기서는 RunStart라는 매개변수를 만들었습니다. 


애니메이션 상태에서 마우스 오른쪽 버튼을 클릭하여 Make Transition 을 생성하여 다음의 그림처럼 만들어 줍니다. 그럼 각각의 애니메이션 상태에서 전환이 이루어지는 상황을 만든 것입니다. 이때 각각의 상태전환시 매개변수 설정을 해줍니다. 여기서는 서있다가 달리는 전환에서는 true로 해주고, 달리다가 서있는 상태로 갈때는 false로 설정했습니다. 처음 이부분이 조금 헷갈립니다. 영상을 보시면 쉬울거에요^^ 의외로 쉽습니다. 꼭 영상 보세요^^


이제 다음의 코드를 완성해 봅니다. 구현은 잘 될것입니다. 키보드 입력값에 따라 좌우로 움직이며, 방향전환도 잘 됩니다. 또한 해당 키보드 값에 따라 animator.SetBool( ) 메서드에 의해 RunStart 매개변수 값이 설정됩니다. 달리는 부분에서는 true로 설정되며, 설 경우 false로 설정됩니다. 

 제사한 사항은 유튜브를 통해 설명을 들으시면 좀 더 쉬울거에요^^ 유튜브를 통해서는 설명을 하면서 한코드씩 작성합니다. 참고하세요^^

이러한 코드를 통해 이제 자연스럽게 캐릭터가 움직입니다. 와우~ ^^ Has Exit Time 을 체크 해제해야 바로 애니메이션으로 전환되어 더 자연스럽게 할 수 있습니다. 차이를 비교해 보세요^^


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class PlayerController2 : MonoBehaviour

{

    public float speed = 0.05f;

    private Animator animator;


    void Start()

    {

        animator = GetComponent<Animator>();

    }

    void Update(){

        if(Input.GetAxisRaw("Horizontal") < 0 || Input.GetAxisRaw("Horizontal") > 0){

            transform.Translate(Input.GetAxisRaw("Horizontal") * speed , 0, 0);

            transform.localScale = new Vector2(Input.GetAxisRaw("Horizontal"), 1); 

            animator.SetBool("RunStart", true);

        } else if(Input.GetAxisRaw("Horizontal") == 0) {

            animator.SetBool("RunStart", false);

        }

    }

}



자, 우린 여기까지 해서 제법 자연스럽게 캐릭터가 움직이도록 했습니다. 뿌듯합니다. ^^ 다음 시간에 또 만나요~~~~ 안녕~~~


2 0

매일 한알의 마늘처럼 하나의 미션 수행!

동굴뛰쳐나가지 않고 매일 하나의 마늘을 먹기!!!

게임이나 VR, AR 에 유니티가 언리얼과 같이 많이 사용된다고 듣긴 했지만 나와는 관계없는 프로그램 같았습니다. 그러다가 우연한 계기로 게임 디자인을 하면서 유니티에 관심이 생겼습니다. 


자바스크립트가 유니티와 연동된다고 하니, 유니티가 매력있게 다가왔습니다. 유니티까지 활용한다면 작업 영역의 확장 뿐만 아니라 재미있는 콘텐츠를 제작할수 있겠다는 가능성이 보였습니다.


내가 기획하고, 디자인하고, 개발까지 하여 하나의 게임 앱을 만들수가 있다니! 얼마나 달콤한 유혹인지 모릅니다. 물론 수 많은 산을 넘고 에러를 넘고, 오류를 넘어야 하는 것은 각오를 해야 합니다. 그럼에도 불구하고 무척 매력적 입니다. 인고의 시간을 지나면 나는 상상력을 구현할수 있는 하나의 툴을, 도구를 장착할수 있는 것입니다. 아!이!언!맨! 처럼 말이지요!!!


카카오프로젝트 100은 게으른 저를 동기부여해 줍니다. 당장 통장에 계좌가 찍히는 일은 열심히 하게 되지만, 새로운것을 공부할 때는 의지가 참 약해지고 용두사미가 됩니다. 그런 의미에서 카카오프로젝트 100은 100일동안 의지를 불태울수 있는 작은 동기가 됩니다. 카카오프로젝트 시즌1에서는 자바스크립트 기초를 정리했습니다. 

시즌 2에서는 새로운 공부를 도전합니다. 바로 유!니!티!


여러분 생각은 어떤가요?

top