목록언리얼 (116)
초보 코린이의 성장 일지
Perspective(원근투영)이 아닌 Orthographic(직교투영)을 사용해서 Top View 시점전환을 Warp에 적용해 볼 것이다. 1. 카메라를 에디터 맵에 올려놓고, 설정을 Orthographic으로 변경해서 보면 직교투영한 상태처럼 보이게 된다. 1. SubAction을 상속받아 클래스를 하나 만들어준다. #pragma once #include "CoreMinimal.h" #include "Weapons/CSubAction.h" #include "CSubAction_Warp.generated.h" UCLASS(Blueprintable) class U2212_06_API UCSubAction_Warp : public UCSubAction { GENERATED_BODY() private: UP..
Decal을 사용하여 Warp 스킬을 구현해 볼 것이다. 1. Sword를 복사해서 Warp로 이름을 변경해준다. 1. 충돌체 등 다 필요하지 않으므로, 삭제하고 Decal를 추가해준다. 2. 바닥을 향하도록 Y축을 -90도 해준다. 1. Warp를 선택해서 넣어주고, 나머지는 구현 후 다시 넣어줄 것이다. 1. Weapon을 선택하고, Warp를 추가해준다. #include "Characters/CPlayer.h" #include "Global.h" #include "CAnimInstance.h" #include "GameFramework/SpringArmComponent.h" #include "GameFramework/CharacterMovementComponent.h" #include "Camera..
나이아가라를 이용한 Hammer 스킬을 구현해 볼 것이다. 1. 몽타주에 SubAction State를 넣어준다. 2. 각자 알맞은 데이터 값을 선택해준다. 1. 스킬 시전시 알맞은 몽타주가 나오는걸 볼 수 있다. 1. 나이아가라를 사용하여 발사하기 때문에, Actor 객체로 만들어서 사용할 것이다. #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "Weapons/CWeaponStructures.h" #include "NiagaraDataInterfaceExport.h" #include "CAura.generated.h" UCLASS() class U2212_06_API ACAura : public AActor..
Sword Skill이 Target과 충돌할때, 충돌시 멈추는게 아닌 통과하게끔 충돌 옵션을 변경할 것이다. 1. Pawn을 겹침으로 변경해주고 나머지는 블록처리를 해준다. 2. 겹침으로해야 통과가 가능하기 때문. #include "Weapons/SubActions/CSubAction_Sword.h" #include "Global.h" #include "Weapons/CAttachment.h" #include "Weapons/CDoAction.h" #include "GameFramework/Character.h" #include "Components/CapsuleComponent.h" #include "Components/CStateComponent.h" #include "Components/CMovem..
충돌처리를 할때 Attach에서 무기를 붙임과 동시에 충돌 처리 델리게이션 이벤트를 넣어놓았다 . 그러면서 SubAction에서 HitData를 가지고 판단하여 처리를 하게된다. DoAction에서는 부모에 함수를 오버라이딩해서 연결을 통해 사용할 곳에서 호출하도록 설계가 되어있다. #pragma once #include "CoreMinimal.h" #include "Weapons/CSubAction.h" #include "Weapons/CWeaponStructures.h" #include "CSubAction_Fist.generated.h" UCLASS(Blueprintable) // BP가 될 수 있도록, class U2212_06_API UCSubAction_Fist : public UCSubAct..
Ghost 효과를 만들어서 Fist 스킬에 사용해 볼 것이다. 1. 머터리얼을 생성해준다. 1. 이미시브가 외곽선을 나타낸다. 사이드가 밝게 보이는걸 확인할 수 있다. 1. Blend Mode를 Translucent로 바꿔줘야 반투명으로 만들 수 있다. 1. 반사, 굴절, 프레넬(Freznel) 방정식을 사용할 것이다. 구현하는 이유는 반사와 굴절을 동시에 구현할때 사용한다. 2. Fresnel와 Exponent가 곱해지면 제곱이 된다. 3. Color와 곱하게 되면 제곱된 값이 색상하고 섞이는 구조가 된다. 4. 제곱 이상에 수치가되면 밝으로 색상이 몰리게 되는 효과가 나온다. 5. 마지막 곱할때 20을 주는 이유는 컬러는 1을 넘어가면 1로 제한이 될 것이고, 이미시브는 20 수치 그대로 들어가기 때..
Fist 스킬을 시전할때 카메라 이동 효과를 주게끔 만들어 볼 것이다. 노티파이로 카메라 시전 효과를 주게되는데 중요한 점이 하나있다. CameraLocal = 카메라 공간을 나타낸다. World = 월드 위치 UserDefinded = 나의 공간 이걸 알고 넘어가야 하는 이유는, 각자의 공간에서 UserDefinded이 아니면 회전값을 사용할 수가 없다. 내가 정해놓은 플레이 기준으로 회전값을 줘야하기 때문이다. 더보기 #pragma once #include "CoreMinimal.h" #include "Animation/AnimNotifies/AnimNotifyState.h" #include "CAnimNotifyState_CameraAnim.generated.h" UCLASS() class U221..
Fist 스킬을 만들어 볼 것이다. 1. 화면에 배치하는게 아닌 기능만을 제공해주기 위해 생성해 줄 것이다. 2. 배치하는게 아니므로 Actor로 상속받는게 아닌 Object로 받아준다. 직렬화를 해줘야 하기 때문. 더보기 #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "CSubAction.generated.h" UCLASS(Abstract) // 기능이 없으므로, 할당 x class U2212_06_API UCSubAction : public UObject { GENERATED_BODY() public: UCSubAction(); public: virtual void BeginPlay(class ACha..
Fist 스킬을 만들어 볼 것이다. 1. 화면에 배치하는게 아닌 기능만을 제공해주기 위해 생성해 줄 것이다. 2. 배치하는게 아니므로 Actor로 상속받는게 아닌 Object로 받아준다. 직렬화를 해줘야 하기 때문. 더보기 #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "CSubAction.generated.h" UCLASS(Abstract) // 기능이 없으므로, 할당 x class U2212_06_API UCSubAction : public UObject { GENERATED_BODY() public: UCSubAction(); public: virtual void BeginPlay(class ACha..
모듈에 접근하여 무언가 기능을 추가하거나 할때 커플링이 일어나게 되면 치명적인 오류가 발생할 수 있다. 근본적인 문제를 해결하기위해 인터페이스나 이벤트로 중간역할을 하게 될텐데, 전혀 영향을 주지 않는 방법으로 모듈에 접근하여 기능들을 더 구현해 나가 보겠다. 더보기 #include "Weapons/CWeaponAsset.h" #include "Global.h" #include "CAttachment.h" #include "CEquipment.h" #include "CDoAction.h" #include "GameFramework/Character.h" #if WITH_EDITOR void UCWeaponAsset::PostEditChangeChainProperty(FPropertyChangedChain..