상세 컨텐츠

본문 제목

플레이어 이동, 사망, GetAxis

유니티/게임만들기

by MJ_119 2024. 2. 14. 16:52

본문

태그설정 : 예를들어 탄막게임에서 탄알이 충돌한 게임 오브젝트가 플레이어인지 확인하기 위해 사용

 

- 플레이어 이동 스크립트

 

public Rigidbody playerRigidbody; // 이동에 사용할 리지드바디 컴포넌트 선언
    public float speed = 8.0f; // 이동 속력

    
    void Start()
    {
        
    }

    
    void Update()
    {
        if (Input.GetKey(KeyCode.UpArrow) == true)
        {
            //위쪽 방향키 입력이 감죄된 경우 z 방향으로 힘주기
            playerRigidbody.AddForce(0f, 0f, speed);
        }
        if (Input.GetKey(KeyCode.DownArrow) == true)
        {
            //위쪽 방향키 입력이 감죄된 경우 -z 방향으로 힘주기
            playerRigidbody.AddForce(0f, 0f, -speed);
        }
        if (Input.GetKey(KeyCode.RightArrow) == true)
        {
            //위쪽 방향키 입력이 감죄된 경우 x 방향으로 힘주기
            playerRigidbody.AddForce(speed, 0f, 0f);
        }
        if (Input.GetKey(KeyCode.LeftArrow) == true)
        {
            //위쪽 방향키 입력이 감죄된 경우 -x 방향으로 힘주기
            playerRigidbody.AddForce(-speed, 0f, 0f);
        }
    }

 

Input.GetKey() : 지정한 키를 < 누르는 동안 > true를 반환, 아니면 false 반환

Input.GetKeyDown() : 지정한 키를 < 누르는 순간 > true를 반환, 아니면 false 반환

Input.GetKeyUp() : 지정한 키를 < 누르다가 손을 뗀 순간 > true를 반환, 아니면 false 반환

 

 

- 플레이어 사망 처리

public void Die(){
// 자신의 게임 오브젝트를 비활성화
gameObject.SetActive(false);
}

 

# gameObject : 변수 // 컴포넌트 입장에서 자신이 추가된 게임 오브젝트를 가리키는 변수

# GameObject : 타입

 

SetActive : GameObject 타입에 내장되어 있는 메서드.

 

- 조작감 개선하기

void Update(){
		// 수평축과 수직축의 입력값을 감지하여 저장
        float xInput = Input.GetAxis("Horizontal");
        float yInput = Input.GetAxis("Vertical");

        // 입력값과 이동 속력을 사용해 실제 이동 속도 결정
        float xSpeed = xInput * speed;
        float ySpeed = yInput * speed;

        // Vector3 속도를 (xSpeed, 0, ySpeed)로 생성
        Vector3 newVelocity = new Vector3(xSpeed, 0f, ySpeed);
        
        // 리지드바디의 속도에 newVelocity 할당
        playerRigidbody.velocity = newVelocity;
        }

 

- Input.GetAxis() : 어떤 축에 대한 입력값을 숫자로 반환하는 메서드

 

float Input.GetAxis(string AxisName);

 

# Horizontal 축

 수평 축에 대응되는 키

 - 음의 방향 : 왼쪽 방향키, A 키

 - 양의 방향 : 오른쪽 방향키, D 키

 Input.GetAxis("Horizontal")의 출력값

 - 왼쪽 방향키, A 키 : -1.0

 - 아무것도 누르지 않음 : 0

 - 오른쪽 방향키, D 키 : +1.0

 

# Vertical 축

 수직 축에 대응되는 키

 - 음의 방향 : 아래쪽 방향키, S 키

 - 양의 방향 : 위쪽 방향키, W 키

 Input.GetAxis("Vertical")의 출력값

 - 아래쪽 방향키, S 키 : -1.0

 - 아무것도 누르지 않음 : 0

 - 위쪽 방향키, W 키 : +1.0

 

- Vector3 : 원소 x, y, z를 가지는 타입. 위치, 크기, 속도, 방향 등을 나타낼 때 주로 사용

Vector3 vector = new Vector3(x, y, z);

 

# Rigidbody의 AddForce()와 velocity의 차이 : AddForce는 관성이 있고, velocity는 관성없이 바로 이동 가능.

'유니티 > 게임만들기' 카테고리의 다른 글

벡터  (0) 2024.03.11
UI 앵커 프리셋, 게임 매니저  (1) 2024.03.05
리지드바디, 머티리얼, 메인카메라  (0) 2024.02.14
캐릭터 AI 구현하기  (0) 2024.02.10
Navigation 시스템  (0) 2024.02.09

관련글 더보기