input : 게임 내 입력을 관리하는 클래스
anyKeyDown : 아무 입력을 최초로 받을 때 true
-> return 값이 bool값
void Update()
{
if (Input.anyKeyDown)
Debug.Log("플레이어가 아무 키를 눌렀습니다.");
}
anykey : 아무 입력을 받으면 true
void Update()
{
if (Input.anyKey)
Debug.Log("플레이어가 아무 키를 누르고 있습니다.");
}
입력방식은 누를 때, 누르고 가만히 있을 때, 손을 땠을때.
void Update()
{
if (Input.GetKeyDown(KeyCode.Return))
# 이때 return이 키보드의 Enter키
Debug.Log("아이템을 구입하였습니다.");
if (Input.GetKey(KeyCode.LeftArrow))
Debug.Log("왼쪽으로 이동 중 ");
if (Input.GetKeyUp(KeyCode.RightArrow))
Debug.Log("오른쪽 이동을 멈추었습니다.");
}
GetKey : 키보드 버튼 입력을 받으면 true
GetKeyDown : 키보드 버튼을 누를 때 true
GetKeyUp : 키보드 버튼에서 손을 땔 때 true
void Update()
{
if (Input.anyKeyDown)
Debug.Log("플레이어가 아무 키를 눌렀습니다.");
if (Input.GetMouseButtonDown(0))
Debug.Log("미사일 발사!");
if (Input.GetMouseButton(1))
Debug.Log("미사일 차징 중 ...");
if (Input.GetMouseButtonUp(1))
Debug.Log("슈퍼 미사일 발사!");
}
GetMouse : 마우스 버튼 입력을 받으면 true
GetMouseDown : 마우스 버튼을 누를 때 true
GetMouseUp : 마우스 버튼에서 손을 땔 때 true
이때, 매개변수는 0,1로 받는데 0 = 좌클릭 , 1 = 우클릭이다.
유니티에서 edit -> project setting -> input manager를 보게 되면 유니티에서 지정해 놓은 몇가지의 버튼을 볼 수 있다.

Axes 아래에는 버튼들이 존재하며 Size를 통해 개수를 추가하거나 줄일 수 있다.
각각의 동작에 들어가보면 위의 사진과 같이 동작에 이름에 따라 기본적으로 특정 버튼이 할당되어 있는 것을 볼 수 있다.
positive button부분을 수정해주고 ( 나의 경우에는 Jump라는 행동의 positive button을 'space'로 수정하였다.)
void Update()
{
if (Input.GetButtonDown("Jump"))
Debug.Log("점프!");
if (Input.GetButton("Jump"))
Debug.Log("점프 모으는 중");
if (Input.GetButtonUp("Jump"))
Debug.Log("슈퍼 점프!!");
}
이렇게 코드를 작성한다면

space를 한번 누르게 되면 Jump라는 동작이 실행되고,
space를 계속 누르고 있으면 GetButton에 의해 '점프 모으는 중'이라는 출력문이 계속 되다가,
손을 떼는 순간 GetButtonUp에 의해 '슈퍼 점프!!'라는 문구가 출력되게 된다.
Input.GetButtonDown("Jump")와 같이 안에 들어가는 매게변수가 string 값이고 이 문자열이 바로 버튼 입력부분 사진에 있는 여러가지 문자열들이다. ex) Fire1, Submit, Cancel...
GetAxis : 수평, 수직 버튼 입력 받으면 float
void Update()
{
if (Input.anyKeyDown)
Debug.Log("플레이어가 아무 키를 눌렀습니다.");
if (Input.GetButton("Horizontal"))
Debug.Log("횡 이동 중 ..." + Input.GetAxis("Horizontal"));
}
이렇게 코드를 작성하면

아래와 같이 모든 가중치가 포함해서 출력이 된다.
void Update()
{
if (Input.anyKeyDown)
Debug.Log("플레이어가 아무 키를 눌렀습니다.");
if (Input.GetButton("Horizontal"))
Debug.Log("횡 이동 중 ..." + Input.GetAxisRaw("Horizontal"));
}
이렇게 코드를 작성하게 되면

와 같이 가중치가 포함되지 않고 출력이 된다.
지금은 Horizontal을 사용하였지만 종이동에 해당하는 Vertical도 위의 방식과 똑같이 사용할 수 있다.
오브젝트는 변수 transform을 항상 가지고 있다.
오브젝트 같은 경우에는 기본적으로 초기화가 완료된 transform을 가지고 있다.
Translast() : 벡터 값을 현재 위치에 더하는 함수.
간단하게 벡터를 말하자면
int nuumber = 4;와 같은 코드에서 4와 같은 순수한 값을 스칼라라고 한다. 근데 이러한 단순한 값에 방향과 크기를 가지고 있는 것이 벡터값 이라고 이해하고 넘어가면 될 것 같다.
void Start()
{
Vector3 vec = new Vector3(5, 0, 0); // (x축,y축,z축)
transform.Translate(vec);
}
이렇게 코드를 작성할 수 있는데 Vector3()함수는 매게변수로 x축의 값, y축의 값, z축의 값을 넣어주게 된다. 위와 같이 코드를 작성하고 실행하게 되면

이렇게 생긴 transform값을 가지고 있던 오브젝트의 위치가

이처럼 x축으로 5만큼 이동한 transform값을 가지고 있는 것을 볼 수 있다.
이번엔 이 코드를 Update()함수에서 실행하게 되면
void Update()
{
Vector3 vec = new Vector3(0, 0.1f, 0); // (x축,y축,z축)
transform.Translate(vec);
}
start와 달리 Update는 1초에 60회 정도 실행되기 때문에 이 코드를 작성하고 실행을 하면 이 스크립트가 달려있는 오브젝트가 위로 쭉 올라가는 현상을 볼 수 있다.
void Update()
{
Vector3 vec = new Vector3(
Input.GetAxis("Horizontal"),
Input.GetAxis("Vertical"),
0); // (x축,y축,z축)
transform.Translate(vec);
}
오늘은 이렇게해서 상하좌우로 움직일 수 있게 코드를 만들어보고 강의를 마쳤다.