1일차

곽현빈·2024년 1월 8일

Unreal Engine Practice

목록 보기
1/6

1.변수
데이터를 저장하기위한 공간을 선언하는 것

1-1.수를 나타내는 변수

-Byte-
0부터 255까지의 정수를 나타내는 변수

-Integer-
-2,147,483,648부터 2,147,483,647까지의 정수를 나타내는 변수

-Integer64-
-9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지의 정수를 나타내는 변수

-Float-

1-2.문자를 나타내는 변수
-Name-
-String-
-Text-
1-3.참과 거짓 2진수를 나타내는 변수
-Boolean-

1-4.좌표를 나타내는 변수(오늘 진도에는 포함되어있지 않음)
Vector
Rotator
Transform

2.조건문
주어진 조건을 충족시키면 조건에 따라 명령을 실행하는 것

-Branch-
프로그래밍 언어에서 if문과 유사한 기능을 하는 블루프린트
참과 거짓의 값을 입력받아 이 다음 무엇을 실행할지 알려준다

3.연산자
덧셈 뺄셈 곰셈 나눗셈부터 이상 이하 초과 미만 등을 계산해 참과 거짓으로 출력하는 등 산술적 논리적 연산 등을 담당하는 것

3-1.산술 연산자
. + , - , * , / , % 등이 있다

3-2.논리 연산자
. > , < , <= , >= , == 등이 있다.

4.그외 각종 기능들

4-1.Print Text
Printf("Hello world");
cout<<"Hello world";
등의 기능을 구현해두었다

4-2.set, get
변수에 등록되어있는 숫자를 변경 혹은 불러오기등을 담당한다.

4-3.Formet Text
변경되는 텍스트를 작성한다.
실행시마다 바뀌는 숫자를 새로 입력받을 수 있다.

해당 블루프린트의 내용의 설명

변수의 역할
HP:임의의 체력을 구현했다. 기본값은 1000이다.
Death:죽었는지 살았는지를 표기해놨다. 기본값은 False이다.
Ammo:탄환의 잔량을 구현했다. 기본값은 5이다.
Noting_Ammo:탄환이 있는지 없는지의 값을 표기했다. 기본값은 False이다.

가장 먼저 맨 왼쪽 위의 구간은 탄이 있는지 확인 후 탄이 있다면 탄을 소모하고 오른쪽 문항에 있는 명령을 실행시키도록 했다.

1.먼저 마우스 좌클릭시 Noting_Ammo의 값을 확인해 먼저 탄이 있는지 없는지 확인한다.
2.만약 탄이 없다면 "탄없음" 을 출력하고 만약 탄이 있다면 다음문장으로 넘어간다.
3.탄의 잔량이 0보다 작거나 같은지 큰지를 확인한다. 만약 탄이 없다면 Nothing_Ammo의 값을 변환해 탄이 없음을 표기한다.
4.다시한번 탄이 있는지 없는지를 확인한다. 이 과정이 들어가있는 이유는 탄의 값이 0보다 작음에도 다음 조건문을 실행시켜 탄을 쏴버리는 일이 생기지 않게 하기 위해서이다.
5.탄의 잔량을 1 줄이고 남은 탄환의 수를 표기한다.

이 문항까지의 자체적인 피드백은 다음과 같다.
1.오른쪽의 명령문은 중간에 끊어서 이벤트를 발생하는 문장을 넣고 이벤트를 발생시켜 그 문장을 트리거로 실행시키도록 하는것이 좋을것같다. 이는 실제로 게임을 개발한다 가정했을때 탄이 쏴지는 족족 적의 피가 닳는것이 아니기 때문이다. 실제 게임으로 구현한다면 주인공이 무기를 들고 쐈을때 탄환의 수를 줄이고 탄이 있고 없고를 확인하며 재장전 하는 과정만 넣고 적에게 직접적인 타격이 들어가는것은 이벤트를 생성해 총구에서 탄이 나가게 하고 총구에서 레이케스트등을 통해 적에게 탄이 맞는다는 이벤트를 생성해 주인공의 무기의 공격력을 따로 불러와 체력을 뺄는것이 좋을것같다.

2.이 문장데로라면 탄환이 0발일때 탄없음을 출력하지 않고 탄이 없다는걸 인식한다. 이는 탄없음 대신 자동으로 재장전을 해주는 기능을 넣을 생각이라면 탄을 0발일때 한번 누르고 다시한번 눌러야 재장전이 된다는 뜻이다.

두번째로 재장전 구간이다.
1.R클릭시 탄을 일단 0발으로 줄인다. 이는 재장전이 6초라는 시간이 걸리도록 설정했는데. 그 시간동안 탄의 잔량이 남아있다면 재장전을 함과 동시에 총을 쏴버리는 상황이 발생하기 때문이다.
2.6초 딜레이 실행 후 탄의 양을 기본값 5로 돌려둔다.
3.이후 Nothing_Ammo의 값을 탄이 있음으로 돌려놓고 탄환의 잔량을 확인시켜준다.

이 문항까지 알아낸 피드백은 다음과 같다.
탄의 최대량을 5를 직접 입력하여 보충시켰는데 이 변수값을 따로 저장해놓고 채우는것이다. 이는 총이 한종류라면 큰 상관이 없지만 총의 종류가 다양해지면 탄의 최대량을 상황에 따라 바꿀 수 없다는것이 문제이다. 마찬가지의 이유로 딜레이도 변수로 지정해서 해야만 한다. 이 다음에 나올 총의 데미지 량도 변수로 지정하여 불러오고 빼오고 하는것이 좋을것이다.

세번째로 체력이 닳는 구간이다.
1.왼쪽에 있는 문항에서 탄환이 맞았다는 정보를 불러온다. 이는 추후 배울시 이벤트 트리거로 대체할 예정이다.
2.HP의 값에서 무기의 데미지 100만큼을 제외한다.
3.HP의 값이 0보다 큰지 작거나 같은지 계산한다.
4.HP의 값이 0보다 크다면 체력의 잔량을 표기하고 작거나 같다면 죽었다는 정보를 불러와 you died를 표기한다.

이 문항의 자체적 피드백은 다음과 같다.
Death라는 변수를 지정해놓고 사용하지 않았다. 이를 따로 변수로 지정해 두어야 하는 이유는 다음과 같다. 사망시 죽었다는 문구를 표기하는것 이외에도 세이브포인트에서 불러온다던지 몇번 죽었는지 카운터를 올린다던지. 마리오같은 게임의 경우 잔여 생명의 양을 줄인다던지 등 죽었다는 문구를 표기하는 것 외에도 이런저런 역할이 있기 때문이다.

주말 연습목표
아래에 있는 블루프린트를 피드백을 적용해 C++로 작성해본다.

profile
unreal engine

0개의 댓글