본문 바로가기
[ CODING STUDY ]/》유니티 실습

유니티 - [2D 캐릭터 움직이기]

by MRG 2021. 5. 12.
728x90
반응형

https://assetstore.unity.com/packages/2d/characters/bolt-2d-dinorun-assets-pack-188721

 

Bolt 2D DinoRun Assets Pack | 2D 캐릭터 | Unity Asset Store

Elevate your workflow with the Bolt 2D DinoRun Assets Pack asset from Goldmetal. Find this & more 캐릭터 on the Unity Asset Store.

assetstore.unity.com

▣ 여기서 에셋을 받으세요.

 

 

▣ 기본적으로 원하시는 2D 캐릭터와 바닥을 넣어주세요. 
Player오브젝트에 Rigidbody 2D와 Box Collider2 D 영역을 넣어주세요.
Rigidbody 2D는 이따 물리효과를 주기 위함입니다.
그리고 스크립트를 player에 만들어서 넣어주세요.

 

 

▣ 그리고 이렇게 변수로 playerSpeed 와 Rigidbody2 D 자료형으로 저장할 변수를 선언해 주세요.
그런 다음에 Start 함수에서 rid2D 변수에 Rigidbody2 D 값을 GetComponent 해주세요.
그럼 rid2 D 변수로 player가 가지고 있는 Rigidbody2D를 코드로 컨트롤할 수 있게 됩니다. 

 

 

▣ PlayerMove()라는 함수를 만들어주세요. 
이 함수에 캐릭터가 움직이는 코드 입력에 관한 부분을 만들어줄 겁니다.
그리고 조건문으로 오른쪽 키와 왼쪽 키를 입력받았을 경우에 대한 코드를 완성해주세요. 
그럼 Update()에서 PlayerMove() 함수를 프레임 단위로 호출하고 조건문을 계속 검사하게 될 겁니다. 

 

▣ 기본적으로 움직이는 코드를 진행하겠습니다. 
transform.Translate() 함수는 player오브젝트 정보에서 봤던 transform에 있는 x, y, z 포지션을 조절하는 함수라고 생각하시면 됩니다. 
그리고 Translate() 함수에 어떤 매개변수가 들어가야 하는지 마우스를 올려놓으면 이렇게 친절하게 정보가 나오게 됩니다. 

 

 

▣Vector3()라는 건 x, y, z 값을 의미합니다. 그럼 우리는 오른쪽 키와 왼쪽 키를 누를 때에는 포지션이 x만 바뀌어야 하기 때문에 x값만 변경해 주면 됩니다. 

▣ new Vecotr3을 보실 수 있으실 건데 new라는 건 쉽게 새로 생성해주는 키워드라고 생각하시면 편한데 우리는 계속 새로운 값으로 업데이트를 해줘야 하기 때문에 new를 붙어서 진행한다고 생각하시면 조금 이해하기 쉬우실 겁니다. 
그리고 아까 만들었던 playerSpeed값과 * 곱하기 Time.deltaTime을 곱해줬습니다. 
이건 어떤 컴퓨터 사양이든 동일하게 속도를 비춰주기 위해 경과시간을 곱해주신다고 생각하시면 됩니다. 
이게 없이 실행하는 것과 time.deltaTime을 곱하고 실행하는 결과가 어떻게 다른지 직접 한번 확인해 주세요. 

 

▣ 저장한 후에 실행을 해보면 오른쪽 키와 왼쪽 키를 눌렀을 경우 Player오브젝트에 Transform에 Position값이 바뀌는 걸 볼 수 있습니다. 

 

▣ 이번에는 rid2D에 있는 AddForce() 함수를 이용해서 포지션 값이 아닌 물리효과를 이용해서 이동해보도록 하겠습니다. 
아까 우리가 만들었던 변수 rid2D.AddForce() 함수에 마우스를 올려보면 이렇게 매개변수 값을 어떤 값으로 입력해야 하는지 나옵니다. Vector2 값을 입력하라고 되어 있습니다. 
이건 x, y를 의미합니다. 

 

▣ 그럼 아까와 동일하게 x 값만 움직이기 때문에 이렇게 playerSpeed값을 x 매개변수에만 넣었습니다.
그리고 , 콤마를 하면 이렇게 ForceMode2D.Force를 넣게 됩니다.
이건 힘을 주는 종류를 모드를 선택해주는 겁니다. 
Force는 힘을 자동차 액셀을 밟는 느낌으로 힘을 점점 가해주는 걸 의미합니다. 

 

▣ 저장을 하고 실행하면 점점 힘을 받으면서 캐릭터가 움직이는 걸 확인할 수 있습니다. 

 

▣ 다시 스크립트로 돌아가 Impulse로 바꿔서 해보겠습니다.
이건 힘을 빡 한 번에 크게 주는 모드입니다. 
그리고 저장하고 실행하면 착하고 날아가는 걸 확인할 수 있습니다.

 

728x90
반응형

댓글