-
Notifications
You must be signed in to change notification settings - Fork 2
develop Player Movement
Jeon-YJ1004 edited this page Jan 9, 2023
·
5 revisions
- asset store에서 2d 캐릭터를 다운 받았습니다. asset store
- demo 폴더에서 캐릭터 하나를 scene에 넣고 c# script를 만듭니다.
2-1. demo 폴더에서 가져온 오브젝트는 이미 컴포넌트나 애니메이션이 구현되있습니다.
따라서 적용된 컴포넌트나 스크립트를 꺼주고 필요한 부분만 키도록 하겠습니다. - Animation 폴더에 Animator를 만듭니다.
- 폴더 구조
Assets < Animation<Player.controller
< Hero Knight ~ (에셋 폴더)
< Script< PlayerMovement.cs
- WASD나 방향 키로 캐릭터를 일정한 속도로 움직인다.
-
Input.GetAxisRaw : Horizontal : 좌우로(방향키 왼쪽/오른쪽) 움직이는 값을 받아옴, Vertical : 수직으로(방향키 위/아래) 움직이는 값을 받아옴 즉, Horizontal 값을 받아올 때 왼쪽 키를 누르면 0에서 -1로 값이 변하고,오른쪽 키를 누르면 0에서 1로 값이 변하는 형식이다.
-
FixedUpdate() : 물리효과가 적용된 오브젝트를 조정할 때 사용. Timesteip에 따라 일정한 간격으로 호출.
-
Rigidbody.MovePosition() : Rigidbody.position(순간이동으로 생각하면 편함)과 달리 보간이 활성화 돼 있으면 프레임 랜더링 사이에서도 자연스러운 이동을 연출한다.
- 마우스 클릭 시 클릭한 좌표로 이동한다
- Vector2 clickTarget: 클릭한 좌표
Vector2 relativePos: 현재 캐릭터의 좌표와 클릭한 좌표와의 차이 값 - Camera.main.ScreenToWorldPoint(Input.mousePosition): 마우스 위치(클릭한 좌표)를 Camera가 비추고 있는 화면(Screen)내의 좌표 값을 사용할 수 있게 해준다.
- Vector2.MoveTowards(): 서로 다른 위치의 놓여있는 Object들의 위치를 계산하여 특정 Object가 목표지점까지 이동할 수 있게 해주는 Vector의 내장 함수
- 좌우가 바뀌면 캐릭터의 Sprite가 Flip(뒤집는다).
- horizontal > 0.01f || relativePos.x>0 일 때는 오른쪽 이동, 반대인 경우 왼쪽으로 이동.
- 원래 이미지가 오른쪽으로 보고 있기 때문에 오른쪽 이동일 경우 flip.X=false.
- Move 상태일 때 애니메이션 설정
- Player_Idle과 Moving 사이 transition 만들기. boolean Moving이 true일 경우 Moving 상태로 변경.
- animator.SetFloat("Horizontal", movement.x),animator.SetBool("Moving", true) 으로 값 변경.
참고 url
fixedUpdate
getAxis
code 참고
유튜브 참고