유니티/[길건너 친구들] 클론코딩

[Unity] #1 플레이어 좌우앞뒤 이동 기능 구현

da_log 2023. 1. 3. 14:45

 

Feat 플레이어 좌우앞뒤 이동

 

플레이어의 방향을 전환하기 위해서

transform.eulerAngles = new Vector3(0, 90, 0)과 같이 오브젝트의 rotation 값을 바꿔주어

각각 방향키를 눌렀을 때 플레이어의 rotation 값이 변경되도록 했다.

 

처음에는 플레이어 방향전환 기능을 만들었을 때

오른쪽 방향키를 누르면 오른쪽으로 90도로 회전하도록 했다.

 

그랬더니 방향키를 누를 때마다 rotaition값이 계속 +90씩 추가되어서

오른쪽으로 가는 것이 아니라 오른쪽 회전 후 앞으로 나가서

플레이어가 계속 뱅뱅 돌게 되는 문제가 생겼다.

 

오른쪽 방향키를 눌렀을 때 rotation값을 (0, 90,0)으로 변경되도록 하니까

뱅뱅 도는 문제없이 오른쪽으로 이동만 할 수 있게 되었다.

 

 

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

public class Player : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow) | Input.GetKeyDown(KeyCode.DownArrow) | Input.GetKeyDown(KeyCode.LeftArrow) | Input.GetKeyDown(KeyCode.RightArrow))
        {
            //Move forward
            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                transform.eulerAngles = new Vector3(0,0,0);
            }
            // Move backward
            if (Input.GetKeyDown(KeyCode.DownArrow))
            {
                transform.eulerAngles = new Vector3(0,-180,0);
            }         
            //Move left   
            if (Input.GetKeyDown(KeyCode.LeftArrow))
            {                
                transform.eulerAngles = new Vector3(0,-90,0);
            }
            //Move right
            if (Input.GetKeyDown(KeyCode.RightArrow))
            {
                transform.eulerAngles = new Vector3(0,90,0);
            }
            
            transform.Translate(Vector3.forward * 2);
        }
    }
}