-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlayerDollController.cpp
More file actions
82 lines (65 loc) · 2.48 KB
/
PlayerDollController.cpp
File metadata and controls
82 lines (65 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Fill out your copyright notice in the Description page of Project Settings.
#include "PlayerDollController.h"
APlayerDollController::APlayerDollController()
{
// PlayerController에서 Inventory를 객체로 가지게 함.
PlayerInventory = CreateDefaultSubobject<UInventoryClass>(TEXT("PlayerInventory"));
// 지금 들고있는 Item의 slot
CurrentInventorySlot = 0;
}
void APlayerDollController::SetupInputComponent()
{
Super::SetupInputComponent();
// 1번 슬롯 선택: 키 입력 이벤트를 1 키에 연결
InputComponent->BindAction("Inventory1", IE_Pressed, this, &APlayerDollController::SelectInventorySlot1);
// 2번 슬롯 선택: 키 입력 이벤트를 2 키에 연결
InputComponent->BindAction("Inventory2", IE_Pressed, this, &APlayerDollController::SelectInventorySlot2);
// 3번 슬롯 선택: 키 입력 이벤트를 3 키에 연결
InputComponent->BindAction("Inventory3", IE_Pressed, this, &APlayerDollController::SelectInventorySlot3);
// 4번 슬롯 선택: 키 입력 이벤트를 4 키에 연결
InputComponent->BindAction("Inventory4", IE_Pressed, this, &APlayerDollController::SelectInventorySlot4);
// 5번 슬롯 선택: 키 입력 이벤트를 5 키에 연결
InputComponent->BindAction("Inventory5", IE_Pressed, this, &APlayerDollController::SelectInventorySlot5);
}
void APlayerDollController::SelectInventorySlot1()
{
ChangeHandItem(0);
}
void APlayerDollController::SelectInventorySlot2()
{
ChangeHandItem(1);
}
void APlayerDollController::SelectInventorySlot3()
{
ChangeHandItem(2);
}
void APlayerDollController::SelectInventorySlot4()
{
ChangeHandItem(3);
}
void APlayerDollController::SelectInventorySlot5()
{
ChangeHandItem(4);
}
// 손에 들고있는 물체를 변경하는 함수 : 물체는 모두 손에 잡고 있으며 선택 되었는지에 따라 보이게/안보이게 설정함.
void APlayerDollController::ChangeHandItem(int32 SlotNumber)
{
// PlayerInventory의 Inventory array에 해당 index가 존재하는지 확인
if (PlayerInventory->Inventory.IsValidIndex(CurrentInventorySlot))
{
// 지금 들고있는 물체 보이지 않게
if (AActor* CurrentItem = PlayerInventory->Inventory[CurrentInventorySlot])
{
CurrentItem->SetActorHiddenInGame(true);
}
}
CurrentInventorySlot = SlotNumber;
if (PlayerInventory->Inventory.IsValidIndex(CurrentInventorySlot))
{
// 새로운 물체 보이게
if (AActor* NextItem = PlayerInventory->Inventory[CurrentInventorySlot])
{
NextItem->SetActorHiddenInGame(false);
}
}
}