문제 1 - 프로젝트 생성 및 스프라이트 추가하기
Exercise7이라는 이름의 새 2D Unity 프로젝트를 생성합니다. SampleScene의 이름을 Scene0으로 변경합니다. 새 Sprites 폴더를 추가하고 운영 체제를 사용하여 선택한 스프라이트를 해당 폴더에 복사합니다. 스프라이트를 계층 구조 창으로 드래그하여 씬에 게임 오브젝트를 생성합니다. 게임을 실행하고 아무 일도 일어나지 않는지 확인합니다.
문제 2 - 가로로 드라이브
새 스크립트 폴더를 만들고 해당 폴더에 Driver라는 새 C# 스크립트를 만듭니다. Visual Studio에서 새 스크립트를 열고 클래스에 대한 문서 주석을 추가합니다. Driver 클래스(스크립트)는 키보드 입력을 기반으로 게임 오브젝트를 구동합니다.
MoveUnitsPerSecond 라는 상수를 추가하여 public class 로 시작하는 줄 아래에 게임 오브젝트가 초당 몇 단위로 움직이는지 저장합니다. 스크립트에서 Start 메서드를 삭제합니다. Update 메서드 본문에 코드를 추가하여 가로 입력 축의 값(기본 Unity 프로젝트에 이미 제공됨)을 horizontalInput 이라는 변수에 저장하고 해당 값이 0이 아닌지 확인합니다. 해당 축에 입력이 있으면 게임 오브젝트의 x 위치를 변경합니다(평소와 같이 로컬 변수를 사용). X 위치를 변경하는 데 적절한 양은 horizontalInput * MoveUnitsPerSecond * Time.deltaTime 입니다. 키보드 처리 강의에서 키보드 입력 처리를 자세히 다룹니다.
계층 구조 창에서 게임 오브젝트에 드라이버 스크립트를 첨부하고 게임을 실행하여 가로로 주행합니다.
문제 3 - 수직으로 구동
Update 메서드 본문에 수직 입력 축(기본 Unity 프로젝트에 이미 제공됨)의 입력을 처리하는 코드를 추가하여 게임 오브젝트의 y 위치를 변경합니다.
게임을 실행하여 수직으로(원하는 경우 수평으로) 구동합니다.
코드 작성
/// <summary>
/// Move the object using the keyboard
/// </summary>
public class Driver : MonoBehaviour
{
const float MoveUnitsPerSecond = 5;
// Update is called once per frame
void Update()
{
// 오브젝트의 현재 위치 저장
Vector3 position = transform.position;
// 세로축, 가로축의 GetAxis값 저장
float horizontalInput = Input.GetAxis("Horizontal");
float VerticalInput = Input.GetAxis("Vertical");
// x축 이동
if (Input.GetAxis("Horizontal") != 0)
{
position.x += horizontalInput * MoveUnitsPerSecond * Time.deltaTime;
}
// y축 이동
if (Input.GetAxis("Vertical") != 0)
{
position.y += VerticalInput * MoveUnitsPerSecond * Time.deltaTime;
}
// 이동한 거리 오브젝트에 적용
transform.position = position;
}
}
'코딩 공부 > Unity C#' 카테고리의 다른 글
배열(Array) (0) | 2024.07.04 |
---|---|
while을 사용하여 충돌 없이 스폰 (1) | 2024.07.02 |
키보드 입력 및 게임패드(Joystick) 처리, 오브젝트 이동 (1) | 2024.06.30 |
입력 관리자를 활용하여 스폰 및 폭발 (0) | 2024.06.30 |
입력 관리자(Input Manager) (0) | 2024.06.28 |