재미있는 실감미디어

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

유니티기초미끄러지듯이 움직이는 캐릭터 제어

김혜영
2023-10-10
조회수 809

지난주 코엑스 유니티 서밋을 신청하고 열심히 강연을 듣고 있었습니다. 사람들도 많이 왔고, 강연도 흥미로왔습니다.


한참 듣고 있는데 딸에게서 톡이 옵니다. 요즘 게임 만드는 재미에 빠져서 이것 저것 많이 물어봅니다. 바빠서 주말에 바주겠다고 했습니다.



주말부터 딸과 같이 만들기 시작했습니다. 바쁘고 아파서 스스로 해보라고 책을 추천해주었는데, 어느새 혼자서 유튜브 등을 보면서 유니티 2D의 기본적인 사항은 모두 마스터했더군여요. 딸을 키우는 엄마로서, 가르치는 교사로서 매우 뿌듯하고 기뻤습니다. 많은 가능성을 보면서 좋더군요. 


스스로 혼자 터득한것을 바탕으로 제가 유니티 2D 기본 개념을 다시 설명해주었습니다. 딸이 그러더군요. 혼자 책과 유튜브 등을 보면서 할 때는 천천히 진행되는 느낌인데, 엄마랑 하니 쓩하고 진도가 나간다고 좋다고 합니다. 기특하기 짝이 없습니다. 2D 배경을 만들고 캐릭터를 만들고 움직임을 주기 위해 스크립트를 작성했습니다. 이미 기본적으로 캐릭터를 좌우로 움직이게 만들었더군요. 어떻게 만들었냐고 하니 유튜브에서 이렇게 검색했다고 합니다.

"unity button move" 라고 검색하고 제일 처음 나온 영상을 통해 구현했다고 합니다. 제 딸이지만 훌륭합니다. 무슨 말인지는 모르지만 그냥 했다고 합니다. 그대로 했더니 캐릭터가 움직인다고 좋아합니다. 참 재미있습니다. 아이가 기특하기도 하지만, 결국 공부는 본인이 하고 싶어야 됨을 느낄 수 있습니다. 본인이 하고 싶으면 그것은 새로운 놀이가 됩니다.


그래픽은 유니티 에셋스토어를 사용했습니다. 제가 대학에서 유니티 수업을 할 때 2D는 주로 이 에셋을 이용합니다. 훌륭합니다.

https://assetstore.unity.com/packages/2d/environments/free-platform-game-assets-85838


딸이 찾은 유튜브 소스를 기준으로 딸과 다음과 같이 배경을 만들었습니다. 테스트를 위해 텍스트를 생성하고 변수도 만들어서 할당해둔 상태입니다. 플레이어에게 스크립트를 어태치하고 설정된 변수값에 각각 텍스트를 넣어준 상태입니다. 충돌과 중력을 위해 Rigidbody2D와 BoxColider2D도 어태치해두었습니다.


오른쪽 제어를 버튼으로 하기 위해 각각 임시 사각형에 Event Trigger를 이용하여 함수도 연결해두었습니다. 각각 Point Down과 Point Up에 해당 함수가 설정되어 있습니다.


왼쪽 버튼도 임시 사각형에 Event Trigger를 이용하여 함수도 연결해두었습니다. 각각 Point Down과 Point Up에 해당 함수가 설정되어 있습니다.


캐릭터가 배경을 벗어나서 떨어지는 것을 방지하기 위해 양쪽 옆에 사각형을 만들고, BoxColider2D를 추가해둔 상태입니다.


오른쪽도 사각형을 만들고 BoxColider2D를 추가해둔 상태입니다. 


이제 플레이어에 연결된 Move3라는 스크립트에는 다음과 같은 코드가 작성되었습니다. 코드는 깃허브에 올려두었습니다.

https://github.com/EngediKimHyeYoung/Unity/issues/23


처음에 해당 변수들을 잘 선언하고, 버튼을 누르는 동안과 눌렀다가 떼는 동안 변수를 달리하여 FixedUpdate() 함수를 통해 캐릭터를 제어하게 됩니다. 눌렀다가 뗄 때는 iTween 함수를 이용하여 천천히 감속하도록 했습니다. 또한 애미메이션 전환과 캐릭터 이동에 따라 좌우 반전도 적용했습니다. 

https://assetstore.unity.com/packages/tools/animation/itween-84


EaseType의 속성은 다음의 사이트에서 참고했습니다.

http://www.pixelplacement.com/itween/documentation.php


딸이 어떤 게임을 만들지 기대가 됩니다. ^^


1 0

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

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

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


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


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


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

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


여러분 생각은 어떤가요?

top