C# 기본 문법 (키 코드 받기)

로젠·2024년 4월 18일
0

게임 프로그래밍

목록 보기
4/49
post-thumbnail

Update

Update는 유니티에 사용되는 함수로 Transform을 사용하고 매 프레임마다 동작한다. 캐릭터가 움직일 때 Update 안에 식을 작성하여야 한다.

void Update(}
{
	//코드 작성
}

GetKeyDown

GetKeyDown은 키를 누를때 발생한다.

void Start()
{
	if(Input.GetKeyDown(KeyCode.Space)) //스페이스를 누를 때 발생
    	print("스페이스 키 눌림");
}

스페이스 키 눌림

GetKey

GetKey는 키를 누르는 동안 발생한다.

void Update()
{
	if(Input.GetKey(KeyCode.Space)) //스페이스를 누르는 동안 발생
    	print("스페이스 키 누르고 있음");
}

스페이스 키 누르고 있음

GetKeyUp

GetKeyUp은 키를 땔 때 발생한다.

void Update()
{
	if(Input.GetKeyUp(KeyCode.Space)) //스페이스에서 손을 땔 때 발생
    	print("스페이스 키 땜");
}

스페이스 키 땜

Translate는 position와 비슷하게 해당 좌표로 움직인다. Translate는 local 좌표를 기준으로 하고 position은 global 좌표를 기준으로 한다는 차이점이 있다.

Time.deltaTime

성능이 다른 두 컴퓨터를 이용할 때 화면에 나타나는 결과가 같게 해줌.

한 프레임이 0.25초마다 출력하는 컴퓨터와 한 프레임이 0.5초마다 출력하는 컴퓨터가 있다고 하고 플레이어의 좌표가 0에서 4까지 움직이는 것을 출력할 때 첫 번째 컴퓨터는 한 프레임당 1씩 움직이고 두 번째 컴퓨터는 2씩 움직인다. 만약 Time.deltaTime을 사용하지 않는 경우 프레임당 1씩 움직인다 치면 첫 번째 컴퓨터는 1초 후에 4라는 좌표로 움직인 반면 두 번째 컴퓨터는 2라는 좌표로 움직이는 경우가 생긴다.

void Update()
{
	float x = transform.position.x;
    x = x + 0.01 * Time.deltaTime;
}

WASD로 움직이기

GetKey와 Time.deltaTime을 이용하여 키를 받아 wasd로 움직일 수 있다.

void Update()
{
	float x = 0.0f, z = 0.0f;
    if (Input.GetKey(KeyCode.W))
    	z += speed;
    else if (Input.GetKey(KeyCode.S))
        z -= speed;
    if (Input.GetKey(KeyCode.D))
        x += speed;
    else if (Input.GetKey(KeyCode.A))
        x -= speed;
    z *=Time.deltaTime;
    x *= Time.deltaTime;
	transform.Translate(x, 0.0f,z);
}

0개의 댓글