목록Unreal Engine/2. Twin Stick Shooter (15)
스토리지

1. Animation Blueprint 만들기 아까 Blend를 만들어 두었기때문에 설정이 간단하다. Blend에서 x축, y축을 Direction, Speed로 명명했기에 그거에 관한 값을 여기서 구하면 된다. 2. 각 축의 값 계산하기 먼저 Speed와 Direction을 구하기 전에 이 Pawn이 Valid한지 체크를 한다. 1. Speed Get Velocity 함수를 통해 속도를 가져온다. 반환값은 Vector이다. Vector은 속도 및 방향을 가지고 있기 때문에 우리는 속도만 필요하다. 벡터의 길이가 속도이므로 VectorLength 함수를 이용하여 속도를 구한 뒤에 변수로 저장한다. 2. Direction 언리얼은 x축이 전방을 가리킨다. 그것을 이용하여 각도를 쉽게 구할 수 있는데. R..

이제 간단한 로직은 완성되었으니 외관을 꾸며야 한다. 아직 캐릭터에 애니메이션이 없으므로 애니메이션을 달아준다. 애니메이션들이 미리 준비가 되어있다. 우리는 이것을 어느때에 어떤 애니메이션이 작동되는지를 가르쳐 주어야 한다. 1. Animation Blend Space 1. Animation Blend Space 만들기 1. Content Browser에서 마우스 우클릭 2. Animation -> Blend Space 클릭 3. 현재 캐릭터에 적용되고 있는 스켈레톤 선택 2. Blend Space에서 축 설정 X축 : Direction (방향) : 최소 -180 ~ 최대 180 Y축 : Speed (속도) : 최소 0 ~ 최대 375 축에서 설정할 때 375cm는 그래도 달린다고 느껴질만한 최소의 속도..

1. 게임 시작 후, 그 자리에서 죽었을 때. 게임 시작 후, 움직이지 않고 그 자리에서 플레이어가 사망 했을 때는 플레이어는 지정된 위치에서 부활하지만 적은 그 자리에 그대로 있기 때문에 문제가 발생한다. 2가지의 해결 방법이 있다. 플레이어가 리스폰되기 전에 모든 적을 제거 플레이어의 리스폰 위치를 랜덤하게 하기 1번은 간단하지만 적의 수가 많으면 퍼포먼스적 문제를 야기할 수 있다. 하지만 여기서는 적의 수가 많지 않기 때문에 1번 방법을 사용한다. RespawnPlayer 수정을 통해서 구현함. RespawnPlayer Event가 호출되면 맵에 있는 모든 EnemyCharacter Actor Class를 가져온다. For Each Loop을 통해 배열 내에 있는 모든 적 Actor에 대해 Dest..

1. Blueprint 작성 및 수정 1. Enemy Spawner Blueprint 제작 1. Box Collision 설치 후 이름을 SpawnVolume이라 명명하기 2. SpawnEnemy 이벤트 작성 Spawn Enemy Custom Event 선언 Get All Actors Of Class 함수를 통해 현재 Level에 존재하는 모든 Enemy Character Actor Class를 받아와 배열에 저장 배열의 길이가 현재 Level에 존재하는 적의 수이니 Max Enemies 변수보다 작으면 Spawn AIFrom Class를 통해 소환 Enemy Character은 EnemyAI라고 하는 AI Controller Class에 의해 조종되기에 AI를 Spawn 한다. Spawn Volume ..

언리얼의 빌드 순서 Actor보다 Game Mode가 먼저 Build된다. 1. Game Mode에서 Respawn 이벤트 정의 SpawnActor Function : 해당 Class를 Spawn Transform에 새로이 Spawn한다. Possess : 해당 타깃에 제어권을 넘겨줌. (빙의라는 의미) 하지만 캐릭터가 만들어지기 전에 GameMode가 만들어지기 때문에 Player Spawn Transform에는 빈 값이 들어간다. 그래서 게임을 시작할 때 미리 PlayerSpawnTransform에 값을 넣어주어야 한다. 2. HeroCharacter Blueprint에서 값 넣기 1. 플레이가 시작 되었을 때, 앞서 만들었던 Sequence로 Job을 진행 2. Game Mode를 가져와서 Twin..

1. 적에 Collision 달기 1. Box Collider 설치 2. Blueprint 작성 1. EnemyCharacter의 Damage Volume(Box Collider)로 HeroCharacter가 들어왔을 때, 판별하기 1. ActorBeginOverlap Event를 통해 EnemyCharacter와 다른 Actor간의 충돌 판별 2. 그 Actor가 HeroCharacter이면 형변환 후 변수에 저장 3. 타이머를 0.5초마다 한 번 실행시켜 DamageTheHero라는 이벤트 실행 4. DamageTheHero는 Affect Health 함수를 실행함. 타깃을 Hero에서 해서 Hero에서 Affect Health를 구현 2. HeroCharacter가 Box Collider를 빠져나갔..

결과물 적이 탄환에 맞고 체력이 떨어지려면 다음과 같은 과정이 필요하다. 탄환이 발사됨 -> 탄환이 적에 닿이면 삭제됨 -> 적에서는 이벤트가 들어오면 체력을 깎음 이와 같은 여러개의 블루프린트를 연동하기 위해서는 인터페이스가 필요하다. 인터페이스(Interface) - 블루프린트 블루프린트 간의 통신을 위한 것. - 구현된 기능의 집합체 - 원하는 기능의 구조를 정의하고 그 인터페이스르르 구현하는 오브젝트에서 기능을 정의 아래는 공식 홈페이지의 설명 인터페이스 클래스는 (잠재적으로) 무관한 클래스 세트가 공통의 함수 세트를 구현할 수 있도록 하는 데 쓰입니다. 그대로라면 유사성이 없었을 크고 복잡한 클래스들에 어떤 게임 함수 기능을 공유시키고자 하는 경우 매우 좋습니다. 예를 들어 트리거 볼륨에 들어서..

1. HeroCharacter에서 탄환이 나가는 곳 설정 Arrow component를 사용 2. Weapon Blueprint 작성 1. PullTrigger, ReleaseTrigger, Fire 이벤트 작성 Pull Trigger 이벤트 발동 시에 Do Once를 통해 한번만 실행되게 함. Pull Trigger 이벤트를 통해 Fire 함수 호출 Timer를 설정해서 1초당 몇 발이 나갈지를 RoundsPerSeconds라는 변수를 통해서 조절함. ReleaseTrigger 이벤트를 통해 Timer를 종료하고 위의 Do Once를 초기화 https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/Blueprints/UserGuide/FlowCont..

1. Weapon Blueprint 만들기 1. Actor 형 BluePrint 만들기. 이름은 Weapon 2. Skeletal Mesh Component 만든 후 Gun Mesh 넣기, 총이 X축을 바라보도록 하기 3. Arrow 컴포넌트 생성 Arrow : 탄환이 날아가는 방향을 지정해주는 컴포넌트 2. 탄환 Material 만들기 1. Materials 폴더 만든 후 새 Material 생성 후 더블클릭해서 열기 2. Material 기본속성 변경 빛을 받아서 빛나는게 아닌 자기가 빛을 내야 하기 때문에 Unlit과 Additive로 설정 3. 색상 조정 v 누르고 왼쪽 마우스 클릭 : Vector 생성 => 색깔 조정 m 누르고 왼쪽 마우스 클릭 : Multiply 함수 생성 a 누르고 왼쪽 마..

1. EnemyCharacter을 이름으로 하는 BluePrint Class 생성 2. Mesh 색깔 변경 1. Mesh 설정 후 Mesh 더블클릭 2. Construction Script에서 다음과 같은 블루프린트 작성 머티리얼 인스턴스 다이내믹 머티리얼 인스턴스 다이내믹 (MID) 은 게임플레이 도중 (실행시간에) 계산할 수 있는 머티리얼 인스턴스 입니다. 즉 플레이하는 와중에 스크립트(컴파일된 코드 또는 블루프린트 비주얼 스크립트)를 사용하여 머티리얼의 파라미터를 바꾸는 것, 따라서 게임 전반에 걸쳐 머티리얼을 변경하는 것이 가능하다는 뜻입니다. 입은 피해의 정도에 따라 도색을 바꾸는 것에서부터 얼굴 표정에 반응하여 다른 스킨 텍스처를 블렌딩 인 하는 것에까지, 그 적용 예는 무궁합니다. MID 의..