본문 바로가기

유니티/뱀서라이크

뱀서라이크 따라하기 - 2강 이동하게 만들기-3

그 전의 글과 이어지는 내용입니다!

https://unityfactory.tistory.com/5

오늘도 유니티 강의를 들으며 따라하는 과정을 작성해보도록 하겠습니다

 

먼저 다운 받은걸 실행시켜 보기 위해서, 오브젝트의 컴포넌트 창에서, player input이라 검색하고, 나오는 컴포넌트를 추가해주신 뒤, Create action 버튼을 눌러 파일을 만들어주시면  이런 화면이 나오게 됩니다!

또한 요러한 input action에 대한 창도 뜨게 되는데요, 그 화면에서 processor 부분에 normalized Vectore 2를 추가해주시면 됩니다

그 뒤 다시 작성했었던 c# 스크립트를 켜주신 뒤, 위의 네임스페이스에 

using UnityEngine.InputSystem;

를 가장 마지막줄에 포함시켜주시면 됩니다

그런 뒤, Update 부분을 없애주시면 됩니다

그 뒤, unity에 돌아가서 player behavior 아래쪽을 다시 보면, 활용할 수 있는 함수들이 나와있는데  그중 사용할것은 OnMove 입니다

 

이 함수의 경우에는 자동완성이 되지 않으니 그점 참고바랍니다!

이렇게 아래쪽에 선언해주신 뒤, 받는 값으로는 InputValue 타입을 받게 해줍니다

 

그 안에 이제 inputVec이라는 변수를 선언하고, 

inputVec = value.Get<Vector2>();

이런식으로 입력해 player input의 자료형과 맞춰주시면 됩니다

이번 코드에서는 이미 normalized가 unity에서 적용되었기 때문에, 코드상에서는 해주실 필요가 없습니다!

 

신기하게도 이 코드만으로 코드의 작성은 끝났습니다!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
    public Vector2 inputVec;
    public float speed;

    Rigidbody2D rigid;
    void Awake()
    {
        rigid = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
   
    void FixedUpdate(){
        Vector2 nextVec = inputVec.normalized*speed*Time.fixedDeltaTime;
        rigid.MovePosition(rigid.position + nextVec);
    }

    void OnMove(InputValue value){
        inputVec = value.Get<Vector2>();
    }
}

이제 저장 후, 유니티에서 작동을 시켜보면 잘 작동되는 모습을 확인하실 수 있습니다!

 

다음 글에서는 2D 셀 애니메이션을 제작하는 방법을 알아보겠습니다!

 

7-20