상세 컨텐츠

본문 제목

유니티 플레이어 3D 캐릭터 움직임, 이동 시키기

유니티

by MJ_119 2023. 7. 5. 03:10

본문

유니티에서 간단하게 아래와 같은 C# 스크립트를 만들고 움직이길 원하는 캐릭터에 컴포넌트를 추가해 준 다음

 

Inspector 창에서 speed의 값을 넣은다음에 플레이 후 움직임을 확인한다.

 

애니메이션을 안넣었기 때문에 모션 그대로 움직이는 것을 확인할 수 있다.

 

 

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

public class Player : MonoBehaviour
{
    public float speed;

    float hAxis;
    float vAxis;

    Vector3 moveVec;

    void Start()
    {
    
    }

    void Update()
    {
        hAxis = Input.GetAxisRaw("Horizontal");
        vAxis = Input.GetAxisRaw("Vertical");

        moveVec = new Vector3(hAxis, 0, vAxis).normalized;

        transform.position += moveVec * speed * Time.deltaTime;
    }
}

 

 

 

 

 

 

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

public class MovePlayer : MonoBehaviour
{

    public Transform tr;
    public float moveSpeed = 4.0f;
    
        void Start()
    {
        tr = GetComponent<Transform>();
    }

    
    void Update()
    {
        // GetKey 계속 키가 눌려있다면 동작
        // GetKeyDown 키가 최초로 눌린 순간만 동작
        // GetKeyUp 키를 눌렀다 뗀 순간 한번만 동작

        if (Input.GetKey(KeyCode.A))
        {
            // 로컬 기준
            //tr.Translate(Vector3.left * moveSpeed * Time.deltaTime, Space.Self);

            // position은 right밖에 없음, left가 없음
            //tr.position = tr.position + tr.right * -moveSpeed * Time.deltaTime; 

            // 월드 기준
            tr.Translate(Vector3.left * moveSpeed * Time.deltaTime, Space.World);
        }
        else if (Input.GetKey(KeyCode.D))
        {
            // 로컬 기준
            //tr.Translate(Vector3.right * moveSpeed * Time.deltaTime, Space.Self);

            // position은 right밖에 없음, left가 없음
            //tr.position = tr.position + tr.right * moveSpeed * Time.deltaTime;

            // 월드 기준
            tr.Translate(Vector3.right * moveSpeed * Time.deltaTime, Space.World);

        }
    }
}

위와 같은 방식으로 코드를 작성한뒤

1. 원하는 캐릭터에 스크립트를 추가해준다.

2. 원하는 캐릭터를 인스펙터에 드래그해서 추가해준다.

3. 그다음 실행 시키면 캐릭터가 이동하는것을 확인할 수 있다.

 

로컬 기준은 캐릭터를 축으로 좌우로 이동하는것이고 ( 캐릭터 Rotate 값에 영향을 받음 )

 - 캐릭터가 바라보는 방향을 기준으로 좌우로 이동

로컬 기준

 

월드 기준은 전체 월드를 축으로 좌우로 이동하는 것이다. ( 캐릭터 Rotate 값에 영향을 받지 않음 )

 - 캐릭터가 바라보는 방향과 상관없이 화면상 좌우로 이동

월드 기준

 

관련글 더보기