🎮Unreal4/Blueprint 47

[UE4] 게임 속도 조절, 경직기능, 모빌리티, 딜레이/타이머

철권 게임을 보면 플레이어 공격 시에 잠깐 잠깐씩 애니메이션이 멈추는듯한 "경직 부분"이 있다. 이는 플레이어의 타격감을 높이기 위한 기능으로 Hit Stop 기능을 구현해보았다. 🎢 게임 속도 조절 경직 기능을 구현하려고 게임 전체의 속도를 느리게 하는것은 절대 안된다. 게임 타임이나 게임 요소들도 전부 느려지기 때문에 게임 전체시간을 늦추는 것은 지양해야한다. 즉, 경직을 구현하려면 게임 전체 시간이 아닌 액터 자체의 시간을 늦춰야한다. Set Global Time Dilation Set Global Time Dilation은 게임 전체의 시간을 늦추는 함수이다. 이는 예제로만 사용해보고 실제 게임 구현에는 사용하지 않는다. Set Custom Tile Dilation Set Custom Time D..

[UE4] 카메라 쉐이크(Camera Shake), 시점 전환, Amplitude/Frequency, Waveform

모든 카메라의 관리는 Player가 한다. Enemy의 카메라나 관전자의 카메라여도 게임 상에 있는 모든 카메라는 Player Controller를 통해 관리/작업한다. 🎥 카메라 시점 전환 Player에 메인으로 사용하던 카메라가 존재할 때, Enemy 객체에도 Spring Arm과, 카메라를 컴포넌트 추가한 뒤, Enemy BP에 위와같은 노드를 배치하면 해당 함수가 호출되는 순간 Enemy 객체에 배치해둔 카메라로 시점이 서서히 이동하며 전환된다. Blend Time을 크게 배치할수록 기존 카메라 위치에서 전환될 카메라 위치로 서서히 이동한다. 또한 카메라를 Enemy 객체안에 배치하지 않고, 맵을 전체적으로 비춰주는 카메라로 시점을 전환하고 싶다면, 단순히 Camera 변수를 만들어 해당 카메라를..

[UE4] 사운드 기능(2D Sound/3D Sound), 사운드 감쇠, Draw Debug Sphere

🎺 사운드 기능 (Sound) 언리얼에서 사운드 입히는 방법을 공부해보았다. 사운드를 구현하는 방법으로는 2D 사운드와 3D 사운드 두 가지 종류가 있다. 2D 사운드 2D 사운드는 어디에서든지 거리,위치 상관없이 다 같은 볼륨의 소리가 동일하게 나야하는 경우 사용한다. 예를 들면 배경음악(bgm) 등이 있다. 3D 사운드 3D 사운드는 거리나 상황에 따라 소리가 억제되어 조절이 가능하도록 구현해야 하는 경우 사용한다. 예를 들면 플레이어의 발소리(footstep) 등을 구현하는 데 사용된다. 3D 사운드는 도플러 효과가 적용되어있기 때문에 가까이 오면 소리가 커지고, 멀리가면 작아지는 등의 소리 효과를 나타낼 수 있다. 언리얼에서 사운드 기능을 구현할 수 있는 '사운드 큐'기능이 있긴 하지만, 이번엔 ..

[UE4] RotateVector, 인터페이스 (Interface), Particle, Spawn Emitter at Location / Attached

📒 RotateVector Enemy의 데미지 이펙트를 구현하던 도중 새로 알게된 함수 RotateVector가 있다. 언리얼 설명에서는 벡터 A를 Rotator B로 회전시킨 결과를 반환한다고 적혀있다. 이해하기 쉽도록 사용했던 블루프린트를 보면 다음과 같다. Enemy에게 데미지가 가해졌을 때 특정 이펙트를 Enemy의 위치에서 시키고싶지만, 이펙트를 출력할 위치는 Enemy에 상대적이지 않다. 따라서 출력할 이펙트의 위치를 기준으로 현재 Enemy가 바라보고 있는 Rotation값을 Rotate Vector에 전달해주면, 출력되는 이펙트가 Enemy와 같은 방향을 바라보도록 구현된다. 앞으로도 원하는 방향을 출력하고자 할 때 RotateVector를 자주 사용할 것 같아 글을 정리한다. 📘 인터페이..

[UE4] 무기 충돌 구조 (USpaceComponent)

🚩 무기 충돌 구조 짜기 (USpaceComponent) UPrimitiveComponent Primitive Rendering 데이터나 Vertex Index 데이터같은 일종의 기하학을 포함하거나 생성하는 Scene 컴포넌트 UShapeComponent 단순한 기하학적 모양으로 표현되는 Primitive 컴포넌트이며 충돌체 3개(box, Sphere, Capsule)의 부모이다! 해당 내용이 언급된 이유는 게임을 제작할 때 여러 종류의 Weapon을 제작하는데, 이때 캡슐 충돌체를 쓸지 박스 충돌체를 쓸지 미리 알지 못한다. 이런경우 부모 클래스인 Weapon이 자식 클래스들(종류 별 무기들)의 충돌 관리를 구현할 때 어떤 충돌인지 모르니 Shape Component로 모두 처리할 수 있다. 또한 몇개..

[UE4] AttachActorToComponent/AttachActorToActor, Get Owner, Get Component by Class 함수

📗 AttachActorToComponent / AttachActorToActor AttachActorTo~ 함수는 원하는 액터에 컴포넌트를 원하는 위치에 붙일 수 있는 기능을 제공한다. 즉, 액터의 RootComponent를 제공된 컴포넌트에 어태치하며, 선택적으로 명명된 소켓에서도 어태치할 수 있다. 타깃: 붙이고 싶은 대상이 되는 Actor 오브젝트 레퍼런스를 연결한다. (디폴트 값: self) Parent (Actor): 타깃이 붙어질 대상이 되는 Actor/Scene Component 오브젝트 레퍼런스를 연결한다. Socket Name: Parent에 붙일 선택적인 소켓의 이름을 연결한다. 사용예시) 해당 Attach 함수를 선언한 곳은 검(Sword) 액터이다. 해당 액터를 캐릭터의 Mesh에..

[UE4] 컴포넌트(Actor/Scene Component), 열거형(Enum), 퓨어 함수 설정

🎮 컴포넌트 (Component) 컴포넌트는 액터에 추가시킬 수 있는 함수성 조각으로, 독립적으로 존재할수는 없지만 액터에 추가시키면 자립적으로 사용 가능하다. 따라서 액터에는 포함시켜야 하며 그 자체로는 사용할 수 없다. 또한 컴포넌트는 일반적인 서브 오브젝트의 기본 작동방식과는 상반되게 액터 안에 서브 오브젝트로 생성된 컴포넌트는 인스턴스로 생성된다. 즉, 특정 클래스의 액터 인스턴스 각각은 컴포넌트의 고유 인스턴스를 별도로 갖는다는 뜻이다. 컴포넌트는 액터 컴포넌트와 씬 컴포넌트가 있다. 액터 컴포넌트(Actor Component)는 액터에 추가할 수 있는 재사용 가능 컴포넌트이며 기능만을 가지고 있다. 씬 컴포넌트(Scene Component)는 씬 트랜스폼을 갖는 컴포넌트로, 다른 씬 컴포넌트에..

[UE4] Game Mode Base (Blueprint Class)

🔀 블루프린트 클래스 - Game Mode Base Game Mode Base 클래스는 쉽게말해 게임을 관리해주는 클래스이다. 플레이어 수, 게임에 참가하는 방식 등 기본적인 요소들은 여러 유형의 게임에 공통이지만, 어떤 게임을 개발하는지에 따라 무한대의 규칙 변종이 가능하다. 그런 규칙이 무엇이든, 그 정의와 구현은 "게임모드"에 한다. 즉, 게임 전체를 관할해주는 클래스라고 보면된다. 예를들어, 플레이어 모드일땐 Play Game Mode를 열고, 관전모드일땐 관전 Game Mode를 열면 된다. 언리얼4에 새롭게 도입된 AGameModeBase는 모든 게임모드의 부모클래스가 되었다. 게임모드는 한번에 하나의 게임모드만 사용할 수 있다. 또한 게임모드는 서버에만 존재하므로, 로컬 클라이언트는 원본 게..

[UE4] 콤보공격 (Combo Attack)

언리얼4를 이용하여 한손검(Sword) 콤보공격을 구현하였다. 나중에도 까먹지 않도록 콤보공격의 구현 과정을 정리해보자 ! 1. 마우스 좌클릭을 액션매핑으로 설정하여 공격키로 지정한다. 2. Action 입력 액션이 감지되면 콤보공격 상태인지 Branch로 먼저 검사한다. Enable Combo변수는 기본값이 False이므로 처음 공격을 한 순간은 무조건 False값이 들어가게되어 아래줄에 있는 Play Anim Montage가 실행되고, 첫 공격이 실행된다. 3. 이때 첫 공격을 수행할 때 검을 장착중인지(Equipped), 공격중인 상태인지(Attacking)를 검사하여 모든 조건문을 통과하여 공격할 수 있는 상황이라면 공격중이라는 Attacking 변수를 True로 바꾼 뒤 공격 몽타주를 실행한다...

[UE4] 데미지 프레임워크(Apply Damage/Any Damage), Instigator Controller, Authority 전용 아이콘

👊 데미지 프레임워크 💥 데미지 전달 함수 언리얼 엔진4에는 총 4개의 데미지 처리 함수가 있다. Apply Damage함수는 입힐 데미지를 전달(Return)하여 사용한다. 예를 들어 플레이어가 적(Enemy)과 충돌하면 Apply Damage함수를 호출하여 Enemy에게 입힐 데미지를 전달하여 사용한다. Apply Damage - 일반적인 면 충돌로 처리하여 데미지를 입힌다. Apply Point Damage - 점 충돌을 이용하여 총알같은 피격 무기 구현에 사용된다. - 어떤 방향에서 Actor의 어느 위치에 맞았는지 데미지를 주는 위치 정보도 얻어올 수있는 함수이다. Apply Radial Damage - 구 형태의 데미지로 수류탄같이 방사형으로 퍼지는 데미지를 구현하는데 사용된다. - Origi..

728x90