Задать вопрос
Ответы пользователя по тегу Unreal Engine
  • Почему нет изображения от USceneCaptureComponent2D после спавна actor'a?

    @trjflash Автор вопроса
    Короче, проблема была в получении положения камеры локального персонажа
    Было так

    UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0)

    переписал получение камеры через интерфейс
    ACharacter* LocalCharacter = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0);
    if (!IsValid(LocalCharacter) || !LocalCharacter->Implements<UCharacterInterface>()) return;
    const APlayerCameraManager* PlayerCameraManager = ICharacterInterface::Execute_GetCurrentCameraManager(LocalCharacter);
    Ответ написан
    Комментировать
  • Почему обнуляется указатель?

    @trjflash Автор вопроса
    Видимо я где то пропустил кусок мануала, что бы сравнить блупринтовый элемент с его плюсовым родителем, при передачами между функциями нужно использовать TSubclassOf, потом кастить его к нужному классу и после этого сравнивать. Для меня работает следующим образом

    GetAmmoFromInventory(CurrentAmmo.AmmoType, Qt);
    
    void ANCGRangeWeapon::GetAmmoFromInventory(TSubclassOf<ANCGAmmo> ItemType, int32& AmmoCount) {
    	ANCGBaseCharacter* CharOwner = Cast<ANCGBaseCharacter>(this->GetOwner());
    	CharOwner->StorageComponent->GetAmmoByType(ItemType, AmmoCount);
    }
    
    void UNCGStorageComponent::GetAmmoByType_Implementation(TSubclassOf<ANCGAmmo> ItemToSearch, int32& Quantity)
    {
    	
    	if (ItemToSearch == nullptr) {
    		Quantity = 0;
    		return;
    	}
    	
    	const auto Item = Cast<ANCGBaseItem>(ItemToSearch->GetDefaultObject());
    
    	for (ANCGBaseItem* CurrentItem : StorageItems)
    	{
    		if (CurrentItem->GetClass() == Item->GetClass()) {
    			Quantity = CurrentItem->Count;
    		}
    	}
    	
    }
    Ответ написан
    Комментировать
  • ПОчему не отображается объект после спавна?

    @trjflash Автор вопроса
    В данный момент работает так

    FActorSpawnParameters SpawnParams;
    			SpawnParams.Template = Item;
    			ANCGBaseItem* SpawnedItem = GetWorld()->SpawnActor<ANCGBaseItem>(Item->GetClass(), SpawnParams);
    	SpawnedItem->Count = DropQt;
    	SpawnedItem->DroppedToWorld(NewLocation);
    	UE_LOG(StorageComponentLog, Display, TEXT("Total items %d"), StorageSize);
    	return true;
    Ответ написан
    Комментировать
  • Почему BlueprintImplementableEvent падает в ошибку?

    @trjflash Автор вопроса
    В целом нашел решение

    .h
    UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
    		bool Interract(ANCGBaseCharacter* Character);


    .cpp
    bool ABaseItem::Interract_Implementation(ANCGBaseCharacter* Character)
    {
    	return false;
    }


    Компилятор ругается но сборка проходит и в редакторе все как нужно.
    Ответ написан
    Комментировать
  • Как работает TakeDamage в UE5.1?

    @trjflash Автор вопроса
    Сделал через ApplayDamage

    UGameplayStatics::ApplyDamage(this, FinalDamage, GetController(), nullptr, nullptr);


    Если есть какие то еще варианты буду признателен
    Ответ написан
    Комментировать
  • Как сохранить текущий виджет?

    @trjflash Автор вопроса
    Если вдруг, кто то найдет этот вопрос ))) В общем хотел сделать модульное меню, типо основной контейнер включает шапку с кнопками и по нажатию кнопок открываются разные разделы настроек, напоролся на ошибки. В итоге шапку вынес в основной виджет, там же сделал переключение. Текущий виджет храню в переменной типа Widget, при переключении проверяю тот ли виджет сейчас активен. Если да ничего не делаем, если нет, то удаляем текущий, устанавливаем новый и добавляем. Если можно сделать лучше подскажите.
    608d5a71dfe19361334537.png
    Ответ написан
    Комментировать