Unreal 짚라인 핵심은 포탈과 같습니다.
하지만 다른점은 포탈은 실시간으로 이동할 위치가 바뀌는 반면에
짚라인은 이미 위치가 정해져있다는 것입니다.
void UParkourComponent::JumpEvent()
{
if (ParkourType == EParkourType::EPT_ZIPLINE)
{
//짚라인 종료시
FLatentActionInfo Info;
Info.CallbackTarget = this;
Info.UUID = 0;
Info.Linkage = 0;
Info.ExecutionFunction = FName("ZiplineFinish");
UKismetSystemLibrary::MoveComponentTo(
Character->GetCapsuleComponent(),
Character->GetActorLocation(),
Character->GetActorRotation(),
false,
false,
0.001f,
false,
EMoveComponentAction::Type::Move,
Info);
return;
}
if (ZiplineEnable)
{
//짚라인 수행시 가져온 짚라인 시작지점과 끝지점을 가져온다.
ZiplinePlayStart = ZiplineStart;
ZiplinePlayEnd = ZiplineEnd;
Character->GetCharacterMovement()->SetMovementMode(EMovementMode::MOVE_Flying);
FVector Start = ZiplinePlayStart - (FVector(0.f, 0.f, 40.f));
FRotator Rot=UKismetMathLibrary::FindLookAtRotation(Start, ZiplineEnd);
FLatentActionInfo Info;
Info.CallbackTarget = this;
Info.ExecutionFunction = FName("ZiplinePlay");
Info.UUID = 0;
Info.Linkage = 0;
UKismetSystemLibrary::MoveComponentTo(
Character->GetCapsuleComponent(),
Start,
Rot,
false,
false,
0.2f,
false,
EMoveComponentAction::Type::Move,
Info);
SetParkourType(EParkourType::EPT_ZIPLINE);
return;
}
...
}
//이동할 위치로
void UParkourComponent::ZiplinePlay()
{
FLatentActionInfo Info;
Info.CallbackTarget = this;
Info.UUID = 0;
Info.ExecutionFunction = FName("ZiplineFinish");
Info.Linkage = 0;
FVector End = ZiplinePlayEnd - (FVector(0.f, 0.f, 40.f));
float Time = (End - ZiplinePlayStart).Length() / ZiplineSpeed;
UKismetSystemLibrary::MoveComponentTo(
Character->GetCapsuleComponent(),
End,
Character->GetActorRotation(),
false,
true,
Time,
false,
EMoveComponentAction::Type::Move,
Info);
}
//끝났으면 전체적으로 초기화해줍니다.
void UParkourComponent::ZiplineFinish()
{
FRotator Rot=Character->GetActorRotation();
Rot.Pitch = 0.f;
Character->SetActorRotation(Rot);
Character->GetCharacterMovement()->SetMovementMode(EMovementMode::MOVE_Falling);
SetParkourType(EParkourType::EPT_NONE);
}
결과입니다.
점프이벤트시 호출했기때문에 중간에 짚라인 중지도 할 수 있습니다.
https://youtu.be/RK6tAR_1gZ8?t=1
'공부 > Unreal5' 카테고리의 다른 글
| Unreal UI버튼이 눌리지 않을 때 (0) | 2022.07.30 |
|---|---|
| Unreal Throw Projectile 경로 만들기 (Spline) (0) | 2022.07.28 |
| Unreal 양방향 스플라인 이동 (0) | 2022.07.28 |
| Unreal Replicated 체크를 하지 않았을 때 (0) | 2022.07.06 |
| Unreal PostProcess 사용할때 함수들 (0) | 2022.07.05 |