Game Programming/언리얼
-
무기 버리기Game Programming/언리얼 2023. 10. 17. 16:31
무기를 버리는 기능을 구현했다. DropWeapon() 함수를 구현하는데, bool bInCallModify 인자가 이해가 안갔다. /* Detach weapon and let it fall to the ground*/ void AMyCharacter::DropWeapon() { if (EquippedWeapon) { FDetachmentTransformRules DetachmentTransformRules(EDetachmentRule::KeepWorld, true); EquippedWeapon->GetItemMesh()->DetachFromComponent(DetachmentTransformRules); } } 언리얼 문서를 보면 Modify() 함수를 호출하는 역활을 하는것으로 보인다. 이해를 하기 ..
-
아이템 Enum값 추가Game Programming/언리얼 2023. 10. 17. 16:21
item.h and item.cpp UENUM(BlueprintType) enum class EItemState : uint8 { EIS_Pickup UMETA(DisplayName = "Pickup"), EIS_EquipInterping UMETA(DisplayName = "EquipInterping"), EIS_PickedUp UMETA(DisplayName = "PickedUp"), EIS_Equipped UMETA(DisplayName = "Equipped"), EIS_Falling UMETA(DisplayName = "Falling"), EIS_MAX UMETA(DisplayName = "DefaultMAX") }; 아이템 상태 enum값을 추가했다. 아래와 같이 사용되는 것 같다. Pickup..
-
무기 생성Game Programming/언리얼 2023. 10. 17. 14:44
무기 생성을 위해 Mesh, Flash Light, Point Light를 Weapon.cpp에서 구현했다. Weapon.h private: UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Light, meta = (AllowPrivateAccess = "true")); class UPointLightComponent* PointLight; private: void CreateMesh(); protected: void CreateLightFromBP(const FString& socketName); public: void TurnLight(bool bLight); void ToggleLight(); const class USkeletalMeshSock..
-
클래스 배열 PickupWdigetBP 바인딩Game Programming/언리얼 2023. 10. 17. 11:23
PickupWidgetBP 이미지 아이템 색상 부분에서 Create Binding을 선택한다. 아이템 객체와 Linear Color 변수 3개 로컬 Linear Color 변수 1개를 선언한다. BaseweaponeBP BeginPlay 이벤트에서 pickupwidgetBP의 Item객체에 자기자신을 복사시켰다. PickupwidgetBP 디테일 패널에서 입력 인자를 Integer타입과 리턴 다입을 LinearColor로 설정한다. 아이템 객체에서 배열을 가져와 Branch를 사용해 특정 인덱스(Active StarIndex) 값이 true이면 Visible Alpha false이면 Hidden Alpha로 ReturnAlpha를 사용한다. 위 블루프린트는 노드를 드래그 한 뒤 Collapse to Fu..
-
Bind item nameGame Programming/언리얼 2023. 10. 16. 18:31
Item.h /* The name which appears on the pickup widget*/ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Item Properties", meta = (AllowPrivateAccess = "true")); FString ItemName; 아이템 이름을 추가했다. PickupWidgetBP 아이템 객체에 대한 참조 변수를 생성했다. BaseWeaponBP BaseWeapon이 가지고 있는 PickupWiget 객체를 PickupWidgetBP로 캐스팅한 뒤, PickupWidgetBP 소유의 Item Reference를 Self(C++로 따지면 this)를 사용하여 Set했다. PickupWidgetBP 아..
-
Create DoorGame Programming/언리얼 2023. 10. 15. 22:30
cpp클래스에 Item 클래스를 상속받는 ACDoor 클래스를 선언했다. CDoor.h protected: virtual void BeginPlay() override; virtual void OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) override; virtual void OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimi..
-
UMGGame Programming/언리얼 2023. 10. 12. 15:15
오늘은 UMG에 대해서 배웠다... Overlay를 최상위 노드로 두었다. 이미지를 하위 노드로 넣으면 배경에 색상을 조절할 수 있다. Vertical Box를 형제로 넣어 그 안에 새로운 UI를 배치 할 수 있도록 헀다. 나는 Horizontal Box 두개를 넣어 두개의 박스로 분할했다. 상단의 Horizontal Box는 다시 수평으로 두개로 나누어서 아래와 같이 배치했다. 하단의 Horizontal Box는 좌, 우 Vertical Box로 분할했다. LeftBox에서는 이미지를 넣었고, Right Box에서는 두개의 Vertical Box로 분할하여 무기이름과 총알 개수등을 표기했다. Overlay Auto, Fill 모드를 선택해 박스를 어떻게 채울 지 선택 할 수 있다(비율을 설정하는 기능도..
-
아이템, 기본 무기 추가Game Programming/언리얼 2023. 10. 11. 16:49
#include "item.h" #include "Components\BoxComponent.h" // Sets default values Aitem::Aitem() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; ItemMesh = CreateDefaultSubobject(TEXT("ItemMesh")); SetRootComponent(ItemMesh); CollisionBox = CreateDefaultSubobject(TEXT("CollisionBox")); CollisionB..