using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { [SerializeField] private float moveSpeed = 1f; }
Player 스크립트 파일을 수정하고 저장한다.
콘솔 창에는 입력한 변수가 한번도 사용되지 않았다는 경고가 나온다.
패키지 매니져 윈도를 연다.
유니티 레지스트리로 변경한다.
input system 을 검색하여 설치한다. 설치가 완료되면 이 프로젝트에 적용을 위해 재시작한다.
input action을 스크립트 폴더에서 만들고 Player Controls로 이름 변경한다.
Player Controls 파일 선택 - 인스펙터 창에서 Generate C# Class 체크 - Apply
C# 파일이 생성된다.
Player Controls 파일 더블 클릭으로 열기(새로운 창이 뜬다)
이미지와 같이 Move 설정을 추가한다.
무브의 상하좌우 액션을 추가한다.
상하좌우에 wasd 키를 매칭시킨다.
Save Asset 으로 저장 후 창을 닫는다.
계층창에 Player 객체에 PlayerController 스크립트를 적용시킨다.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.Scripting.APIUpdating; public class PlayerController : MonoBehaviour { [SerializeField] private float moveSpeed = 1f; private PlayerControls playerControls; private Vector2 movement; private Rigidbody2D rb; private void Awake() { playerControls = new PlayerControls(); rb = GetComponent<Rigidbody2D>(); } private void OnEnable() { playerControls.Enable(); } private void Update() { PlayerInput(); } private void FixedUpdate() { Move(); } private void PlayerInput() { movement = playerControls.Movement.Move.ReadValue<Vector2>(); } private void Move() { rb.MovePosition(rb.position + movement * (moveSpeed * Time.deltaTime)); } }
PlayerController 스크립트 작성한다.
update 메서드에서 사용자 입력을 movement 변수에 저장한다.
FixedUpdate 메서드에서 고정된 물리 업데이트마다 Move 메서드를 실행하여 캐릭터를 이동시킨다.
객체 플레이어의 무브 스피드를 4로 변경하고 플레이해본다.
wasd로 상자 움직여 본다.
3. 플레이어 스프라이트 추가하기
스프라이트 폴더에 플레이어 스프라이트 파일들을 드래그로 추가한다.
추가한 스프라이트에 사이드 애니메이션 폴더로 이동.
4개의 파일을 선택 - 인스펙터창에서 텍스쳐 타입을 Sprite(2D and UI)로 변경한다.
그 외 Sprite mode, Pixels Per Unit, Filter Mode를 이미지를 참고하여 변경하고 Apply 버튼으로 적용한다.
3번째 파일을 선택.
스프라이트 에디터를 열고, Grid By Cell Size 로 slice 한다.
스프라이트 세번째 파일을 펼친다.
계층창의 플레이어 객체를 선택한다.
스프라이트의 첫번째 애니메이션을 드래그하여 플레이어 객체의 인스펙터창에 Sprite Renderer-Sprite로 가져간다.
게임 뷰의 사각형이 캐릭터로 변경된다.
플레이 해보면 캐릭터가 움직인다. 애니메이션을 추가하지 않았기 때문에 모션은 없다.
4. 캐릭터 애니메이션 추가와 마우스로 캐릭터 방향 전환하기
Animations 폴더 생성 - Player 하위 폴더를 생성 - 애니메이션 컨트롤러를 만들고 Player로 이름 변경한다.
애니메이션을 생성하고 이름은 Idle로 변경한다.
애니메이션을 생성하고 이름은 Running로 변경한다.
애니메이션 창을 열고 편한 위치로 이동시킨다.
계층창의 플레이어 객체를 선택, Animator 컴포넌트를 추가한다. 애니메이션 컴포넌트와 혼동될 수 있다.
애니메이터 컨트롤러에 Player 애니메이션 컨트롤러 파일을 드래그로 추가한다.
idle, Running 애니메이션에 Loop Time을 체크한다. 게임 중에 반복 재생하기 위함이다.
플레이어 객체의 애니메이션 창을 연다.
Idle, Running 애니메이션 파일을 끌어서 추가한다.
왼쪽에 파라미터에서 Float 로 moveX, moveY를 추가한다.
애니메이션 창에서
Make Transition으로 Idle -> Running으로 연결한다. 4회 반복한다.
인스펙터 창에서 Transitions의 4개를 각각 클릭하여
Has Exit time 체크해제(앞에 애니메이션이 끝나는 것을 기다리지 않고 바로 이 애니메이션이 적용된다)
Transition Duration을 0 으로 변경한다. 2D 애니메이션이기 때문에 프레임 전환이 즉각 이뤄져도 상관없다.