본문 바로가기
게임개발/Unity

[Unity] GameObject의 이동(기본)

by 개발도사(진) 2024. 6. 10.

Unity에서 GameObject를 이동시키는 방식에 대해 다룬다. 기본기이지만, 유닛들이 거의 움직이지 않는 게임들 위주로 만들고 연습하다 보니 쓸 일이 생각보다 없어서 따로 가볍게 정리해 놓는다.

 

1. Transform.Translate

[SerializeField] private Vector3 directionalVector;

    [SerializeField] private float speed;

    private bool _isMoving = false;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return))
        {
            _isMoving =!_isMoving;
        }

        if (_isMoving)
        {
            transform.Translate(directionalVector*(speed*Time.deltaTime));    
        }
    }

 

주의해야 할 점은 default 값이 local 좌표계라는 점이다. 따로 설정하지 않거나, Translate(directionalVector*(speed*time.deltaTime), Space.Self)와 같이 작성하면 자기 자신의 로컬 좌표계를 기준으로 움직인다. World Space를 기준으로 움직이게 하려면 Space.World를 이용해야 한다.

 

2. transform.position 변경

직접적으로 object의 transform.position 값을 변경하는 방식이다.

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

public class Translate : MonoBehaviour
{
    [SerializeField] private Vector3 directionalVector;

    [SerializeField] private float speed;

    private bool _isMoving = false;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return))
        {
            _isMoving =!_isMoving;
        }

        if (_isMoving)
        {
            //transform.Translate(directionalVector*(speed*Time.deltaTime), Space.Self);
            transform.position += directionalVector * (speed * Time.deltaTime);
        }
    }
}

 

주의할 점은 앞서 Translate 함수를 이용한 이동이 local 좌표계를 기본으로 하며 경우에 따라 world 좌표계를 그 기준으로 선택할 수 있었던 것에 비해, transform.position을 직접 변경하는 방식은 world 좌표계만을 기준으로 한다는 점이다.

 

이 두 가지 방법이 가장 기본적인 방법이다. 

'게임개발 > Unity' 카테고리의 다른 글

[Unity] JSON 이용하여 데이터 저장하기  (0) 2024.08.28
[Unity] ScriptableObject  (0) 2024.06.09
[Unity] 게임오브젝트의 회전  (1) 2024.06.08
[Unity] Unity Event  (0) 2024.06.07
[Unity-UI] Canvas - Render Mode  (1) 2023.11.12