1.锁定敌人
void AARPGPlayerController::LockAI()
{
/**获取自己的位置*/
FVector pos = myCharacter->GetActorLocation();
/**获取所有AI对象*/
UGameplayStatics::GetAllActorsOfClass(GetWorld(), AAICharacter::StaticClass(), AiArray);
int aiNum = AiArray.Num();
if (aiNum>0)
{
/**求出最短距离*/
float MainDistance = FVector::Dist(pos, AiArray[0]->GetActorLocation());
/**距离玩家最近的AI*/
AActor * MainDistActor = AiArray[0];
/*遍历所有敌人*/
for (int i =0;i<aiNum;++i)
{
/**判断敌人是否死亡*/
if (Cast<AAICharacter>(AiArray[i])->isDie)
{
continue;
}
/**获取距离*/
float dist = FVector::Dist(pos, AiArray[i]->GetActorLocation());
/**判断最近距离*/
if (MainDistance>=dist)
{
MainDistance = dist;
MainDistActor = AiArray[i];
}
}
/**如果在附近 就进行朝向玩家*/
if (MainDistance<+400)
{
FRotator rot = UKismetMathLibrary::FindLookAtRotation(pos, MainDistActor->GetActorLocation());
/**只让Yaw变化*/
rot.Pitch = myCharacter->GetCapsuleComponent()->GetComponentRotation().Pitch;
rot.Roll = myCharacter->GetCapsuleComponent()->GetComponentRotation().Roll;
/**设置玩家朝向*/
myCharacter->GetCapsuleComponent()->SetRelativeRotation(rot);
}
}
}