오브젝트를 만들어봤으니 움직여보고 싶다.
1. 화면 아래에 있는 Project의 영역에 오른클릭하고
Create > C# Script를 선택한다.
(C# : 프로그래밍 언어. 게임개발할 때 자주 사용된다.)
2. 그러면 이렇게 스크립트 파일이 생성되는데,
이 파일을 더블클릭한다.
3. 그러면 이렇게 Visual Studio가 자동으로 실행되고
최처에는 저렇게 Class안에 Start와 Update라는 메서드 두개가 있다.
Start는 한 번 실행되고 Update는 60프레임?으로 실행된다고 한다.
*클레스와 메서드(함수)의 개념은 프로그래밍의 지식인데,
간단하게 말하자면 클레스는 껍데기고 메서드는 기능이다.
해당 부분에 대한 지식은 C# 프로그래밍 언어를 배우거나
다른 프로그래밍 언어를 배운다면 이해하기 어렵지 않다.
4. 생성된 스크립트를 드레그해서 원하는 오브젝트에
적용시켜 준다.
만약 inspector에 아무것도 안보인다면 Scene에서 적용시킬 오브젝트를
클릭하면 된다.
5. 아래와 같이 작성하면 화면에서 움직인다.
(설명은 캡쳐 화면 아래)
Vector3 move;
-> Vector3 : 백터의 형태? 라고 볼 수 있다. Vector2와 3가 있는데 2D냐 3D냐에 따라 갈린다.
-> move : 아무 이름이나 넣어도 상관x. 변수의 이름이다.
(변수 : 변하는 수. Vector3라는 타입의 값이 변할건데 그 변할 얘의 이름이 move라는 의미)
if (Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.RightArrow))
-> if : 만약에. 말 그대로 만약에를 뜻하며, 뒤에 나오는 괄호안의 조건이 충족(true)가 된다면 뒤의 코드를 실행하라는 조건문이다.
-> Input : Unity자체가 갖고 있는 클레스라고 알고 있다. 사용자 입력에 대한 것을 감지하는 기능들이 들어가 있음.
-> GetKeyDown : 키를 누르는 것을 인지할 거고 뒤에 괄호 안에 들어가는 것에 대해 감지할 것.
-> KeyCode : 말그대로 키의 코드.
-> LeftArrow : 왼쪽 화살표 키
-> || : OR조건을 나타낸다. 앞에거 이거나 뒤에거 면 true.
Debug.Log(Input.GetAxis("Horizontal"));
-> Debug : 디버그. 아마 알음알음 들어봤을 것이다. 프로그래밍 과정에서 문제가 되는 부분을 찾거나 값을 확인하는 등을 뜻한다. 여기서는 디버그관련 기능을 갖고 있는 클레스라고 보여진다.
-> Log : 기록이다. Console이라는 곳에 괄호안의 내용을 표시해주는데, 사용자들은 보통 볼 수 없다.
-> GetAxis : 괄호안에 있는 것의 값을 가지고 와서 반환해준다. 괄호안의 문자열은 Input Manager에서 관리할 수 있다.
*참고/Input Manager보는 방법 및 설정 법
[Unity] 유니티에서 Input Manager보는 방법
상, 하, 좌, 우 화살표키를 입력하면 그 방향대로 움직이는 스크립트를 짜볼 것이다. 그 전에 Input을 사용할 때 보고 하면 좋은 InputManager을 세팅해보자. 1. Edit > Project Settings... 클릭 2. Input Manag..
gwer.tistory.com
move = new Vector3(Input.GetAxis("Horizontal"), 0, 0);
-> move = : move란 변수에 뒤에 오는 것을 대입해줄거라는 뜻.
-> new : 프로그래밍언어를 배웠다면 어렵지 않게 이해가능하다. Vector3라는 녀석은 앞서서 move라는 이름의 변수로 활용할거라고 선언(컴퓨터한테 말해뒀음)은 했지만 실제로 값을 넣지는 않았다. 그래서 '실제'값을 넣기위해서는 '실제'의 데이터가 필요한데 new를 사용함으로써 Vector3라는 형태의 데이터를 만들겠다는 뜻이다.
-> Vector3(x좌표, y좌표, z좌표) : 이 Vector3는 기본적으로 값을 3개 갖는데 그 각각의 값이 x, y, z좌표이다. 그래서 Input.GetAxis("Horizontal")을 x좌표가 들어갈 자리에 넣어주고 있다. 이렇게 하면 키보드 입력에 따라 GetAxis를 통해서 값을 받아오고 move에 계속 대입하게 된다.
*아래와 같이 해당 인스턴스(클레스가 실체화 된 것)위에 마우스를 올려놓고 있으면 이렇게 설명이 뜬다.
*인스턴스 개념은 이해못해도 쓰는데 지장은 없으나, 이해하면 편-안
*float는 소수
*오버로드는 여기서 이해 못해도 상관x
transform.Translate(move);
-> transform : 유니티에서 제공해주는 기능이라고 볼 수 있는데, 오브젝트 자체를 가르키고 그 오브젝트의 움직임을 관할한다.
-> Translate(move) : 움직이는 기능. 괄호안에는 Vector타입의 데이터를 넣어줘야 하며, move라는 Vector만큼 움직이게 된다.
'Unity' 카테고리의 다른 글
[Unity] 오브젝트 생성해보기 (0) | 2020.12.29 |
---|---|
[Unity] 유니티에서 Input Manager보는 방법 (0) | 2020.12.29 |
[Unity]유니티를 설치하고 Visual Studio를 사용하는데 자동완성이 안되는 경우 (0) | 2020.12.29 |
[Unity] 유니티 인터페이스, 단축키 (Hotkey) (0) | 2019.07.19 |