зашибись тени в ue, ровные!
Слушайте, а каким образом можно переключая APaw на другой, за одно переключить и HUD на него же?
У меня HUD берет текущего перса на BeginPlay()
void AMyHUD::BeginPlay() { Super::BeginPlay( ); tank = Cast<AActorTank>( UGameplayStatics::GetPlayerPawn( this, 0)); }
APlayerController* controller = UGameplayStatics::GetPlayerController(GetWorld( ), 0); if ( !controller) return; if ( controller->WasInputKeyJustPressed( EKeys::One)) { if ( !SwitchToCharacter) return; controller->UnPossess( ); controller->Possess( SwitchToCharacter); }
пока вижу два варианта.
1. брать каждый AHUD::DrawHUD() текщий APaw()
void AMyHUD::DrawHUD() { Super::DrawHUD( ); tank = Cast<AActorTank>( UGameplayStatics::GetPlayerPawn( this, 0)); ...
AHUD * AActorTank::GetHUD() { //we only want locally controlled and controlled by player, not AI if (!IsLocallyControlled() || !IsPlayerControlled()) { return nullptr; } APlayerController* PC = Cast<APlayerController>(GetController()); if (!PC) { return nullptr; } return PC->GetHUD(); }
APlayerController* controller = UGameplayStatics::GetPlayerController(GetWorld( ), 0); if ( !controller) return; if ( controller->WasInputKeyJustPressed( EKeys::One)) { if ( !SwitchToCharacter) return; controller->UnPossess( ); controller->Possess( SwitchToCharacter); // update pointer to currently active APaw in MyHUD AActorTank* TankCharacter = Cast<AActorTank>( SwitchToCharacter); if ( TankCharacter) { AMyHUD* hud = Cast<AMyHUD>( TankCharacter->GetHUD( )); if ( hud) { hud->UpdateActorPointer( TankCharacter); } } }
Как ваш HUD знает какой сейчас APaw активный и используется игроком?
а по какой причине из 5-ти расставленных TankAI_NPC (BP on base c++class)
один не двигается, куда бы я его не поместил на уровне ??
отказался от блюринта, который оборачивал TankAI, только за одним - чтобы ему можно было задать кастомный AIController.
сделал тоже самое в cpp и по удалял блюпринт танки, закинул просто из с++
ATankAI::ATankAI() { PrimaryActorTick.bCanEverTick = true; MovementComponent = CreateDefaultSubobject<UFloatingPawnMovement>( TEXT( "Movement")); MovementComponent->MaxSpeed = 1000.0f; MovementComponent->UpdatedComponent = RootComponent; // дефолтные ИИ для танка AIControllerClass = AActorTankAIController::StaticClass( ); AutoPossessAI = EAutoPossessAI::PlacedInWorldOrSpawned; } void ATankAI::BeginPlay( ) { Super::BeginPlay( ); // спавним ии для данного инстанса танка в начале игры SpawnDefaultController( ); }
но проблему с AI это не решило, часть двигается другая же стоит
я не знаю почему, но лишь поворачивание каждой модели, заставляет их двигаться!
Слишком мало информации, чтобы посоветовать что-то конкретное.
Варианты на вскидку:
1) передаваемый вектор равен (0,0,0)
2) точка пути в которую надо достигнуть, не может быть достигнута (там есть проверка и возвращается даже причина почему точка не может быть достигнута)
3) точка находится за пределами NavMesh или не включена в Dynamic (Project Settings -> Navigation Mesh -> Runtime Generation)
4) Ну и самый очевидный AIController не создаётся или в нём не создается BehaviorTree (или в нём нет Billboard). Легче всего отлаживать на 1-2 танках). Там можно выбрать за кем следить. И вообще надо запускать и следить чо они делают и чо не делают смотря на сцену и смотря в BehaviorTree (например в замедленном режиме нажав Ctrl)
Ну и надо не забывать что UE изначально сетевой движок, поэтому там сразу две части в коде: клиентская и серверная. Которая по своему дружит между собой.
Ну и неужели в логе пусто, вот там у тебя есть Message Log, Output Log. Вообще ничего не пишет?
Salamandr
спасибо за советы!
ты не поверишь, но все было идеально и код и логи там только тот мусор для отладки который я спамлю из компонентов. даже отладка таска для очереди BT:FindRandomLocation показывала успех когда возвращала рандомную точку на нав меше.
дело было вот в чем:
он изначально брал геометрию танка для nav и под ним строил зеленые области, только треки обходил
нужно было добавить для корпуса Navigation::BoxCollision c оффсетом и/или включить динамик обстаклес
ну и включить в коллизиях там же мешу - vehicle a не blockall
сейчас блин без разницы как их крутишь, они все бегают
не без косяков конечно, это это уже следующий этап!
переключился на партиклы, доделал взрыв по туториалу с ютуба
походу обилие лайта в партиклах это бич по производительности!
надо держать их минимум и лучше отдельными эмиттерами с низким кол-вом частиц!
а еще редактор кхм... партиклов, какой он ука не удобный в ue, особенно та часть где кривые редактируются, как им люди пользуются?!(
pixelperfect_
> а еще редактор кхм... партиклов, какой он ука не удобный в ue, особенно та
> часть где кривые редактируются, как им люди пользуются?!(
Или я что-то путаю, или на видео Cascade. Эпики уже некоторое время продвигают Niagara. Он тоже неудобный, но ничего, привыкнуть можно.
pixelperfect_
> а еще редактор кхм... партиклов, какой он ука не удобный в ue
Забей на cascade, переходи на Ниагару. Уже полно по ней туториалов
Tony Lynx
> переходи на Ниагару. Уже полно по ней туториалов
и шо там такого ?
>переходи на Ниагару
а Cascade деприкатед что-ли уже?
смотрел одно видео про ниагару, где робот сквозь клетку проходит и подумал что Niagara для скинмешей!
ну в общем и для каких-то не стандартных штук.
pixelperfect_
> а Cascade деприкатед что-ли уже?
> смотрел одно видео про ниагару, где робот сквозь клетку проходит и подумал что
> Niagara для скинмешей!
> ну в общем и для каких-то не стандартных штук.
Не деприкейтед вроде, но в итоге ниагара его заменит. Сам просто только начал ее изучать, как помне более удобная и легче в освоении. Интерфейс более интуитивный. И насколько знаю в уе5 именно она будет.
Ниагара для всего, эпики ее именно как замену делают для каскейда
innuendo
> и шо там такого ?
Чисто по личным ощушениям лучше каскейда
Cоздал TPS темплейт на С++ который.
И все понять не могу, кто и где изменяет значение Speed в этом графе, кто контролирует переменную? какой-то логики на BP, я в теплейте не нашел!
Просмотрел код проекта, вообще нету упоминаний о Speed, посмотрел инпуты в свойствах проекта там ее тоже нет.
Блин, а где же и кто тогда?
Tony Lynx
> > и шо там такого ?
> Чисто по личным ощушениям лучше каскейда
чем?
1д бленд спейс, несколько анимаций расположены по порядку idle -> walk -> jog -> mid run -> fast run
почему когда ставишь превью точку между анимациями получается такая фигня?