언리얼
-
문 소켓 추가Game Programming/언리얼 2023. 10. 19. 12:57
문에 CenterSocket을 추가했다. const UStaticMeshSocket* Socket = LeftDoorComponent->GetSocketByName("CenterSocket"); FTransform SocketTransform; if (Socket) { if (Socket->GetSocketTransform(SocketTransform, LeftDoorComponent)) { CenterDoorComponent->SetRelativeLocation(SocketTransform.GetLocation()); CenterDoorComponent->AttachToComponent(LeftDoorComponent, FAttachmentTransformRules::SnapToTargetNotIncl..
-
문 물리 작용 업데이트Game Programming/언리얼 2023. 10. 19. 12:51
이전 포스팅을 참조하자면 타이머 안에서 문의 위치를 1씩 움직이는 방법으로 구현했다. https://korean-paul.tistory.com/102 Create Door cpp클래스에 Item 클래스를 상속받는 ACDoor 클래스를 선언했다. CDoor.h protected: virtual void BeginPlay() override; virtual void OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp korean-paul.tistory.com LeftDoorComponent->SetSimulatePhysics(true); LeftDoorComponen..
-
Item Falling StateGame Programming/언리얼 2023. 10. 17. 17:13
아이템이 떨어지는 상태를 만들었다. PA_HeavyMachineGun 물리 에셋 물리객체가 없다면 Add Shape에서 Add Box로 물리객체를 추가하면 된다. Item.cpp SetItemProperties에서 EIS_Falling 상태에 대한 물리정보 변경을 추가했다. case EItemState::EIS_Falling: ItemMesh->SetSimulatePhysics(true); ItemMesh->SetEnableGravity(true); ItemMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); ItemMesh->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); ..
-
아이템 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..
-
블루프린트 엑터를 부모에 붙이기Game Programming/언리얼 2023. 10. 6. 14:51
에셋에 FlashLight가 있어서 한번 써보기로 했다. 두번째 에셋이 FlashLight인데 코드를 먼저 보여준다면 UObject* SpawnActor = Cast(StaticLoadObject(UObject::StaticClass(), NULL, TEXT("/Game/Voyager/Blueprints/BP_FlashLightWeapon.BP_FlashLightWeapon"))); UBlueprint* GeneratedBP = Cast(SpawnActor); if (!SpawnActor) { GEngine->AddOnScreenDebugMessage(2, 5, FColor::Red, FString::Printf(TEXT("CANT FIND OBJECT TO SPAWN"))); return; } UCla..