본문 바로가기
Unreal C++/C++ - History

07 C++ 기초 개념 및 기능 제작(2) / Obstacle Assault

by pp336 2024. 10. 8.

 

개발 목표

 - 장애물 경주용 기능 제작 스크립트

 - C++ 기초 개념을 조합하여 스폰된 오브젝트를 이동하는 내용 작성

 

 

 

 


 

 

 

적용개념

 

- Tick 

  게임 엔진은 게임 루프라는 개념을 통해 플레이어가 행동을 하면 그 정보를 게임에 반영하여 화면에 렌더링 

  언리얼은 Tick 함수를 사용하여 게임 루프를 단계를 진행

 

이전에 Header에서 FVector를 MyVector라는 이름의 변수로 할당
Cpp의 Tick에서 MyVector의 Y 값이 항상 1씩 더해질 것이라는 내용을 작성하고 그 값으로 액터가 불러와질 것이라 될 것이라 명명

 

 

Tick을 통해 실시간으로 이동하는 액터가 구현되었다.

 

 

Glossary

 ● Game Loop

   1. Process Input

   2. Update Game

   3. Render to Display

 

 

 


 

 

 

 

- 로컬 변수

  주어진 함수 내에서만 존재하는 변수(스코프 변수가 유지되는 기간)

  중괄호{}안에 작성되는 경우 로컬 변수로 인식

 

 

1. Header와 별개로 Tick에서 Fvector를 작성하고 LocalVector라는 네이밍을 부여하고 MyVector값과 같도록 명명

   FVector LocalVector = MyVector;

 

 

2. LocalVetctor 값을 MyVector와 별개로 Z 값으로 1을 더해주도록 작성

   LocalVector.Z = LocalVector.Z + 1;

 

 

3. 지역 변수{중괄호}에서 변수를 생성하였기 때문에 LocalVector.Z + 1;은 실행 된 후, 반복 없이 코드를 마친다.

 

Y축 실시간 이동은 그대로 이지만 Z축으로는 입력된 수치 1만 한 번 작동 한다. 지역 변수라는 개념

 

 

 


 

 

 

 

 - 의사(Pseudo) 코드 

  알고리즘에서 사용할 단계를 일반적인 언어로 설명

 

- 주석

   컴파일러에서 무시하는 코드(//)

의사코드와 주석을 이용하여 논리적인 구조 작성, 추후에 수정 할 일이 있거나 협업을 위해 작성하게 된다.

 

 

 


 

 

 

 - 함수 반환

 

 

 

Glossary(용어)

 ● Expression (표현식)- Fragment of code that produces a Value(값을 생성하는 코드)

 ● Statement(문) - An action to be performed(수행 되어야할 동작)

 

  / 표현식은 코드조각의 값을 계산하기 위한 문

 

  Expression

   ● MyVector = 변수에 무엇이든 포함 된 값이 있으니 표현식 

   ● LocalVector.Z + 100 = 마찬가지로 표현식 

   ● Fvector LocalVector = MyVector; = 값을 가져오는데 사용 할 수 없고, c++가 수행하는 동작이 있다고 알려주는 역할

   ● SetActorLocation() = 괄호안을 반환 함으로 표현식

 

MyVector를 이용한 이전 과정에서 GetActorLocation에 Y+1값이 더해지는 값을 액터가 Set되는 형태로 간략화. 의사코드와 주석이 더해지면서 보기도 깔끔해졌다.

 

1. FVector CurrentLocation = GetActorLocation();

2. CurrentLocation.Y = CurrentLocation.Y + 1; 을 시행하며 최종적으로 SetActorLocation(CurrentLocation) 반환 된다.

 

 


 

 

 

 

 - 속도 & 델타타임

 

값을 연산시 컴퓨터 성능에 따라서 좋은 컴퓨터는 같은 연산을 빠르게 할 수 있고, 상대적으로 성능이 느릴시 연산이 느려지게 되는데, 언리얼에서는 델타타임을 이용하면 각 프레임이 실행되는데 시간이 얼마나 걸리는지를 구해서 독립적으로 사용할 수 있게 된다.

 

Header에 FVector 구조체(PlatformVelocty)를 추가하고 CurrentLocation값에 더해지도록 변경

 

 

 

PlatformVelocity 값을 100으로 지정시 오브젝트가 굉장히 빠른 속도로 이동하는 광경을 볼 수 있다. 이를 보완해주기 위하여 언리얼은 Deltatime의 함수를 사용한다.

 

 

 

 

 

 

기존 코드에 Detatime을 곱하도록 작성

 

 

PlatformVelocity 값을 100을 입력시 100cm/s로 움직이는 것을 확인