Pawn ν΄λμ€
Pawn ν΄λμ€λ νλ μ΄μ΄λ AIμ 컨νΈλ‘€λ¬κ° μ°κ²°λμ΄ μ μ΄λ°μ μ μλλ‘ μ€κ³λ ν΄λμ€λ₯Ό μλ―Ένλ€.
1) μ΄κΈ°ν
μμ±ν Pawn ν΄λμ€μ κ²μμ΄ μμλμμ λ νλ μ΄μ΄μ μ λ ₯μ λ°μνλλ‘ μ€μ ν κ²μ΄λ€.
- AutoPossessPlayer: λ λ²¨μ΄ μμλκ±°λ ν°μ΄ μμ±λμμ λ μλμΌλ‘ ν°μ μμ ν΄μΌ νλ νλ μ΄μ΄ 컨νΈλ‘€λ¬λ₯Ό κ²°μ νλ€.
AMyPawn::AMyPawn()
{
// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
AutoPossessPlayer = EAutoReceiveInput::Player0;
}
μ»΄ν¬λνΈμ κΈ°λ‘ μ μ§λ₯Ό μν΄ μΉ΄λ©λΌμ μ€νν± λ©μλ₯Ό μμ±νμ¬ λ£¨νΈ μ»΄ν¬λνΈμ λΆμ°©ν κ²μ΄λ€.
- USceneComponent: μμΉμ νμ κ³Ό κ°μ Transform μ 보λ₯Ό κ°μ§κ³ μμΌλ©° μλμ λ°°μΉ κ°λ₯ν λ€λ₯Έ μ»΄ν¬λνΈλ€μ λΆλͺ¨ ν΄λμ€κ° λλ μ»΄ν¬λνΈμ΄λ€. μΆ©λ, 물리, λ λλ§ κΈ°λ₯μ΄ μμ΄ κ°λ³κΈ° λλ¬Έμ κ³μΈ΅ ꡬ쑰μμ λλ―Έλ‘ νμ©νκΈ° μ’λ€.
- CreateDefaultSubobject: ν΄λμ€λ₯Ό μΈμ€ν΄μ€νμν€λ ν¨μμ΄λ€. μμ±μ λ΄λΆμμ μ¬μ©λλ©° νλΌλ―Έν°λ‘ μ΄λ¦μ λ겨μ€λ€.
AMyPawn::AMyPawn()
{
// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
AutoPossessPlayer = EAutoReceiveInput::Player0;
RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent"));
UCameraComponent* OurCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("OurCamera"));
OurCamera->SetupAttachment(RootComponent);
OurCamera->SetRelativeLocation(FVector(-250.0f, 0.0f, 250.0f));
OurCamera->SetRelativeRotation(FRotator(-45.0f, 0.0f, 0.0f));
OurVisibleComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("OurVisibleComponent"));
OurVisibleComponent->SetupAttachment(RootComponent);
}
2) μ λ ₯ 맀ν
μ λ ₯ 맀νμ μ΄λ€ ν€μ λν μ‘°μμ μ΄λ¦μ λΆμ¬μ£Όλ μμ μ λ§νλ€.
- μ‘μ 맀ν: λ§μ°μ€λ μ‘°μ΄μ€ν±, ν¨λ, ν€λ³΄λ λ²νΌμ²λΌ λλ₯΄κ±°λ, λΌκ±°λ, λλΈ ν΄λ¦νκ±°λ νΉμ μκ° λμ λλ₯΄κ³ μμ λ λ³΄κ³ νλ€.
- μΆ λ§€ν: μ°μμ μΈ κ²μΌλ‘ λ§μ°μ€μ μμΉλ μ‘°μ΄μ€ν± λ§λμ κΈ°μΈκΈ° κ°μ κ²μΌλ‘ μΌμ λμ μ λ ₯μΌλ‘ μκ°νλ©΄ λλ€.
3) λ°μΈλ©
μ΄μ ν° μ‘ν°κ° 맀νλ μ λ ₯μ λ°μ μμ§μΌ μ μλλ‘ λ°μΈλ©νλ μμ μ΄ νμνλ€. λ°μΈλ©μ μ λ ₯ μ€μ μμ 맀νν μ λ ₯ 맀νκ³Ό μ½λμ ν¨μ λμμ λ¬Άμ΄, μ λ ₯μ΄ λ€μ΄μ€λ©΄ μ λ ₯ 맀νμ λ¬Άμ΄μ€ ν¨μκ° μ€νλλλ‘ νλ κ²μ λ§νλ€.
// Called to bind functionality to input
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
InputComponent->BindAction("Grow", IE_Pressed, this, &AMyPawn::StartGrowing);
InputComponent->BindAction("Grow", IE_Released, this, &AMyPawn::StopGrowing);
InputComponent->BindAxis("MoveX", this, &AMyPawn::Move_XAxis);
InputComponent->BindAxis("MoveY", this, &AMyPawn::Move_YAxis);
}
μ°Έκ³
https://wergia.tistory.com/127#footnote_127_2
[UE4] μ λλ‘ λ°λΌκ°κΈ° (2) C++ νλ‘κ·Έλλ° νν λ¦¬μΌ :: νλ μ΄μ΄ μ λ ₯ λ° ν°
μ λλ‘ λ°λΌκ°κΈ° (2) C++ νλ‘κ·Έλλ° νν λ¦¬μΌ :: νλ μ΄μ΄ μ λ ₯ λ° ν° μμ±λ²μ :: 4.20.3 μΈλ¦¬μΌ μμ§ νν 리μΌμΈ νλ μ΄μ΄ μ λ ₯ λ° ν° λ¬Έμμμλ ν°(Pawn)[κ°μ£Ό:1] ν΄λμ€λ₯Ό νμ₯ν΄μ νλ μ΄μ΄μ μ
wergia.tistory.com