본문 바로가기
웹, 게임 제작

유니티 플레이어 이동 관련 코드 모음

by startSmall 2020. 8. 25.

*공부하는 중인 아마추어의 의견이니 좋은 방법이 있으면 댓글 부탁드리겠습니다.

 

 

 

1.Vector.Set으로 위치값 얻고 transform.Translate로 이동. 대각선 이동은 안된다.

    public float speed;
    private Vector2 vector;
 
    void Update()
    {
        if (Input.GetAxisRaw("Horizontal"!= 0 || Input.GetAxisRaw("Vertical"!= 0)
        {
            vector.Set(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
            if (vector.x != 0)
            {
                transform.Translate(vector.x * speed, 00);
            }
            else if (vector.y != 0)
                transform.Translate(0, vector.y * speed, 0);
        }
    }
cs

 

 

 

 

2.transform.Translate(Vector3.방향*속도*시간) 

    public int speed;
 
    private void Update()
    {
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.Translate(Vector3.left * speed * Time.deltaTime);
        }
 
        if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.Translate(Vector3.right * speed * Time.deltaTime);
        }
 
        if (Input.GetKey(KeyCode.UpArrow))
        {
            transform.Translate(Vector3.up * speed * Time.deltaTime);
        }
 
        if (Input.GetKey(KeyCode.DownArrow))
        {
            transform.Translate(Vector3.down * speed * Time.deltaTime);
        }
    }
cs

 

 

 

 

3.위의 내용과 같으면서 간결하지만, 좌표값에 더해서 그런지 물리충돌이 무시된다.

    Vector2 position;
    public float Speed = 1;
 
    private void Start()
    {
        position = transform.position;
    }
 
    void Update()
    {
        position.x += Speed * Time.deltaTime * Input.GetAxisRaw("Horizontal");
        position.y += Speed * Time.deltaTime * Input.GetAxisRaw("Vertical");
        transform.position = position;
    }
cs

 

 

댓글