본문 바로가기

분류 전체보기475

Event Dispatcher은 꼭 써야 할 때 쓰자(Delegate) 상황CMS 할 때 WidgetBP의 버튼을 클릭하면 Call 하는 event dispatcher를쓰고 , player controller의 begin play에서 버튼 바인딩을 한번 한다음에  custom event를 만들어서 기능을 바인딩을 해주었다   이렇게 하면 뭐가 문제가 되냐면,  동그라미 친 Call On Finish Button Clicked라는 이벤트디스페처를 더블클릭했을 때, 함수 안으로 들어가지도 않고 안눌러져서 디버깅이 어렵고,  Find Reference를 눌러야만 알 수 있다는 것.  또 이벤트 디스패처는 여러곳에서 Binding 할 수 있기 때문에 디버깅이 특히 어렵다. Bind 되는 게 다 잡히니까!  그럼 어떻게 하는게 정석이냐 하면 (캐스팅해서) 함수를 불러주자. 함수든 이.. 2024. 8. 20.
Client -> Server로 통신하려면 무조건 Player Controller 통해 가야 함 Client -> Server로 통신하려면 무조건 Player Controller 통해 가야 함  상황: 액터에서 서버로 값을 전해주고 싶은데 액터에서 서버로 어떻게 통신하지?답은 Player Controller를 통해서!Player Controller에서 Set Owner를 통해 ownership을 설정해줘야 한다  여기서 1) Player Controller 블루프린트에 가서 직접 Set Owner를 해주는 방법이 있고, 2)해당 액터 블루프린트에 가서 Player Controller를 받아와서 set owner을 해주는 경우도 있다.  1) Player Controller에서 Set Owner 하는 경우 player controller가 손을 통해 뭘 집었을 때 other actor(집힌 액터)에게.. 2024. 7. 31.
[Unreal] Multiplayer Game Study Introduction멀티플레이어 환경에서 GameMode는 서버에 한개!  우선 멀티플레이 세팅으로 바꿔보자 이제 클라이언트가 서버에 접속하면 HUD가 만들어지는 기능을 구현하고 싶다.우선 새로운 PlayerController 클래스를 만들어서 그 곳에 기능을 넣어주자.    게임모드 클래스에 가서 새로 만들어준 player controller class를 넣어주고 ThirdPersonGameMode의 블루프린트 창에 들어가 Event OnPostLogin을 구현해준다.  이제 플레이어가 JumpBoost를 먹는 것을 구현해보자BP_JumpBoost로 들어가서 Replicates에 체크  이때 다음과 같은 에러가 나타나는데 원인은   일반 액터에서 게임모드를 바로 호출해서 부르려고 하기 때문임하지만 게.. 2024. 7. 4.
[Unreal] Delay vs Retriggerable Delay Delay기능: Delay는 지정된 시간만큼 실행을 지연시킨 후, 그 시간이 지나면 다음 노드로 진행합니다.용도: 일정 시간 후에 한 번만 실행되어야 하는 이벤트에 적합합니다. 예를 들어, 플레이어가 버튼을 누르고 나서 특정 행동을 지연시킨 후 실행하고자 할 때 사용할 수 있습니다.  Retriggerable Delay기능: Retriggerable Delay는 Delay와 유사하지만, 지연 시간 중에 다시 트리거되면 지연 시간이 리셋됩니다. 즉, 새로운 트리거가 발생하면 이전에 설정된 지연이 취소되고, 지연 시간이 다시 시작됩니다.용도: 반복적으로 트리거될 수 있는 이벤트에 적합합니다. 예를 들어, 플레이어가 지속적으로 버튼을 누르는 경우, 마지막 버튼 입력 후 일정 시간이 지난 후에만 특정 행동을 실.. 2024. 6. 21.
[Unreal] Widget과 Widget Component Widget은 Transform이 없다! 그래서 Transform이 있는 Widget Component를 써준다.   위의 방식은 위젯 컴포넌트에서 이미 생성된 위젯을 가져오는 방식Cast To 노드를 사용하여 위젯의 타입을 특정 위젯 블루프린트 클래스 (WBP_KISS2024_FinishStepHUD)로 캐스팅캐스팅이 성공하면, 해당 위젯을 변수에 저장하여 이후에 사용할 수 있도록 합니다. 사용 시점:위젯 컴포넌트가 이미 UI에 추가된 경우.기존 위젯을 참조하여 동작을 변경하거나 값을 업데이트하고 싶을 때. * Casting을 왜 해? 캐스팅(Casting)은 객체의 타입을 변환하여 특정 타입에서만 접근 가능한 속성이나 메서드를 사용할 수 있게 하는 작업입니다. Unreal Engine에서는 특히 블루.. 2024. 6. 20.
[Unreal] CPR- HeadPosition 구할 때 계산 방법에 대한 고찰(UpVector vs ForwardVector) 이슈: 1. CPR 할 때 가슴 압박 지점과 머리가 일직선이 되야 함2. 이를 구하기 위해  Layperson에 있는 HeadAngleSpot과 머리(Camera) 사이의 각도를 구함  3. 내가 처음 구현한 방법은 누워있는 사람의 가슴에 붙어있는 파랑색 스팟의 upVector와 머리(Camera)의 위치를 받아와서 두 벡터를 내적 → ACOS → R2D 하는 방식으로 구현하고 있음  계산 과정을 살펴보자 * 내적 공식  여기서 두 벡터는 단위벡터이고, 그럼 cos만 남는다! cos(세타) 값의 범위는 -1에서 1 사이이고, 내가 알고 싶은 것은 각도! 따라서 acos를 해준다. 여기서 주의할 것!acos의 범위는 0이 프로젝트에서는 고려할 필요 없음 다시 본론으로 돌아와서,4. 나는 가슴 패치의 up .. 2024. 6. 12.