-
Notifications
You must be signed in to change notification settings - Fork 0
[Jeongwon]AI_RangeAttack_1~4
Garden1298 edited this page Dec 12, 2020
·
1 revision
대기중인 NPC가 플레이어와 일정거리 안에 있으면 공격하게 해주었다.
플레어어가 공격범위 안에 있는지 확인하는 BTService 노드
"IsPlayerInRangeRange.cpp"
...
// 플레이어가 공격 범위 안에 있으면 참 반환
cont->get_blackboard()->SetValueAsBool(bb_keys::player_is_in_range_range,
(npc->GetDistanceTo(player) < range_range_large)&&
(npc->GetDistanceTo(player) > range_range_small));
...
npc가 플레이어를 바라보게 만드는 BTTask 노드
"RotateToPlayer.cpp"
...
//npc 위치에서 플레이어를 바라보는 방향 구하기
FRotator PlayerRot = UKismetMathLibrary::FindLookAtRotation(npc->GetActorLocation(), PlayerPawn->GetActorLocation());
//npc 방향 바꾸기
npc->SetActorRelativeRotation(PlayerRot);
...
총알 세팅
"NPC_Projectile.cpp"
...
// ProjectileMovementComponent 를 사용하여 이 발사체의 운동을 관장합니다.
ProjectileMovementComponent = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("ProjectileMovementComponent"));
ProjectileMovementComponent->SetUpdatedComponent(CollisionComponent);
ProjectileMovementComponent->InitialSpeed = 3000.0f;
ProjectileMovementComponent->MaxSpeed = 3000.0f;
ProjectileMovementComponent->bRotationFollowsVelocity = true;
ProjectileMovementComponent->bShouldBounce = true;
ProjectileMovementComponent->Bounciness = 0.3f;
...
총알 스폰
"NPC_ranged.cpp"
...
// 프로젝타일 발사를 시도합니다.
if (ProjectileClass)
{
UWorld* World = GetWorld();
if (World)
{
// 총구 위치에 발사체를 스폰시킵니다.
ANPC_Projectile* Projectile = World->SpawnActor<ANPC_Projectile>(ProjectileClass, GetMesh()->GetSocketLocation("Muzzle_01"), GetMesh()->GetSocketRotation("Muzzle_01"));
if (Projectile)
{
// 발사 방향을 알아냅니다.
FVector LaunchDirection = GetMesh()->GetSocketRotation("Muzzle_01").Vector();
Projectile->FireInDirection(LaunchDirection);
}
}
}
...
상태 | 기능 | 구현 자료 |
---|---|---|
스탯 | "AI_HP = 15"," AI_Dmp = 10", "AI_Attack_speed = 유동적"," AI_speed = 유동적" | |
대기 | 근접 적은 지정된 장소를 대기합니다 | [Jeongwon]AI_RangeAttack_1~4 |
추격 | 플레이어가 원거리 적의 추격범위 내에 진입했을 시 플레이어를 따라옵니다. | [Jeongwon]AI_RangeAttack_1~4 |
공격 | 플레이어가 공격범위 내에 있는지 판단한다. 그 후 공격범위 안에 들어왔을시 공격 애니메이션을 호출한다. | [Jeongwon]AI_RangeAttack_1~4 |
사망 | 사망 시 사망 애니메이션을 호출하고 애니메이션이 끝나면 지운다. |
Park Wiki
Kim Wiki
December.05.2020
December.01.2020
Hong Wiki
1. AI_Chasing_1
2. AI_Chasing_2,3
3. AI_Patrolling_1
4. AI_Patrolling_2
5. AI_Range_Attack_2