Skip to content

develop Player Movement

Jeon-YJ1004 edited this page Jan 9, 2023 · 5 revisions

develop Player Movement

세팅 사항

  1. asset store에서 2d 캐릭터를 다운 받았습니다. asset store
  2. demo 폴더에서 캐릭터 하나를 scene에 넣고 c# script를 만듭니다. 2-1. demo 폴더에서 가져온 오브젝트는 이미 컴포넌트나 애니메이션이 구현되있습니다.
    따라서 적용된 컴포넌트나 스크립트를 꺼주고 필요한 부분만 키도록 하겠습니다.
  3. Animation 폴더에 Animator를 만듭니다.
  4. 폴더 구조
    Assets < Animation<Player.controller
    < Hero Knight ~ (에셋 폴더)
    < Script< PlayerMovement.cs

구현 사항에 따른 설명

  1. WASD나 방향 키로 캐릭터를 일정한 속도로 움직인다.
  • Input.GetAxisRaw : Horizontal : 좌우로(방향키 왼쪽/오른쪽) 움직이는 값을 받아옴, Vertical : 수직으로(방향키 위/아래) 움직이는 값을 받아옴 즉, Horizontal 값을 받아올 때 왼쪽 키를 누르면 0에서 -1로 값이 변하고,오른쪽 키를 누르면 0에서 1로 값이 변하는 형식이다.

  • FixedUpdate() : 물리효과가 적용된 오브젝트를 조정할 때 사용. Timesteip에 따라 일정한 간격으로 호출.

  • Rigidbody.MovePosition() : Rigidbody.position(순간이동으로 생각하면 편함)과 달리 보간이 활성화 돼 있으면 프레임 랜더링 사이에서도 자연스러운 이동을 연출한다.

  1. 마우스 클릭 시 클릭한 좌표로 이동한다
  • Vector2 clickTarget: 클릭한 좌표
    Vector2 relativePos: 현재 캐릭터의 좌표와 클릭한 좌표와의 차이 값
  • Camera.main.ScreenToWorldPoint(Input.mousePosition): 마우스 위치(클릭한 좌표)를 Camera가 비추고 있는 화면(Screen)내의 좌표 값을 사용할 수 있게 해준다.
  • Vector2.MoveTowards(): 서로 다른 위치의 놓여있는 Object들의 위치를 계산하여 특정 Object가 목표지점까지 이동할 수 있게 해주는 Vector의 내장 함수
  1. 좌우가 바뀌면 캐릭터의 Sprite가 Flip(뒤집는다).
  • horizontal > 0.01f || relativePos.x>0 일 때는 오른쪽 이동, 반대인 경우 왼쪽으로 이동.
  • 원래 이미지가 오른쪽으로 보고 있기 때문에 오른쪽 이동일 경우 flip.X=false.
  1. Move 상태일 때 애니메이션 설정
  • Player_Idle과 Moving 사이 transition 만들기. boolean Moving이 true일 경우 Moving 상태로 변경.
  • animator.SetFloat("Horizontal", movement.x),animator.SetBool("Moving", true) 으로 값 변경.

image image image


참고 url
fixedUpdate
getAxis code 참고
유튜브 참고

Clone this wiki locally