유니티로 게임을 개발할때 케릭터를 한번에 일정범위 만큼 움직여야 할 경우가 있습니다.

제가 사용하는 방법은 Translate 함수를 사용합니다.


이 예제는 X 방향으로 moveSpeed 만큼 한번에 이동시키는 코드인데요, Mathf.Round가 사용된 이유는 소수점 자리를 항상 0 으로 강제로 유지시키기 위해서 넣었어요.


transform.Translate(Vector3.left * moveSpeed);

transform.position = new Vector3(Mathf.Round(transform.position.x), transform.position.y, transform.position.z);


유니티 게임 제작 입문 + 유니티 2D 게임 공작소 패키지
국내도서
저자 : 아스나 고지,오노 고지 / 김성재,김범준역
출판 : 길벗 2015.05.29
상세보기


요렇게 구현하면 한번에 일정범위만큼 움직일 수 있답니다.

오른쪽 왼쪽 방향키를 누르면 케릭터가 일정 간격으로 한번에 움직일 수 있도록 풀소스코드는 아래처럼 구현했어요.


using UnityEngine;


public class Player : MonoBehaviour {


    public float moveSpeed;


// Update is called once per frame

void Update () {


        if (Input.GetKeyDown(KeyCode.LeftArrow))

            MoveLeft();

        else if (Input.GetKeyDown(KeyCode.RightArrow))

            MoveRight();

    }


    public void MoveLeft()

    {

        transform.Translate(Vector3.left * moveSpeed);

        transform.position = new Vector3(Mathf.Round(transform.position.x), transform.position.y, transform.position.z);


    }

    public void MoveRight()

    {

        transform.Translate(Vector3.right * moveSpeed);

        transform.position = new Vector3(Mathf.Round(transform.position.x), transform.position.y, transform.position.z);

    }

}