{"id":26485315,"url":"https://github.com/smarthug/ue4-cpp-book","last_synced_at":"2025-03-20T05:56:26.834Z","repository":{"id":43968894,"uuid":"326133056","full_name":"smarthug/UE4-CPP-Book","owner":"smarthug","description":"이득우의 언리얼 C++ 게임 개발의 정석 4.25 이상 버전으로 진행했을때 막히는 부분 정리","archived":false,"fork":false,"pushed_at":"2022-02-13T05:31:33.000Z","size":644,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"4.25.4","last_synced_at":"2023-03-08T16:38:33.147Z","etag":null,"topics":["book","cpp","ue4","ue5","unreal","unreal-engine","unreal-engine-4"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smarthug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-02T07:37:02.000Z","updated_at":"2023-03-07T16:28:21.000Z","dependencies_parsed_at":"2022-09-24T19:11:58.556Z","dependency_job_id":null,"html_url":"https://github.com/smarthug/UE4-CPP-Book","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarthug%2FUE4-CPP-Book","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarthug%2FUE4-CPP-Book/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarthug%2FUE4-CPP-Book/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarthug%2FUE4-CPP-Book/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smarthug","download_url":"https://codeload.github.com/smarthug/UE4-CPP-Book/tar.gz/refs/heads/4.25.4","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244560342,"owners_count":20472219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["book","cpp","ue4","ue5","unreal","unreal-engine","unreal-engine-4"],"created_at":"2025-03-20T05:56:26.267Z","updated_at":"2025-03-20T05:56:26.825Z","avatar_url":"https://github.com/smarthug.png","language":null,"readme":"# UE4-CPP-Book\n이득우의 언리얼 C++ 게임 개발의 정석  4.25.4 버전으로 진행했을때 막히는 부분 정리.  [정오표](http://www.acornpub.co.kr/book/unreal-c#errata)에 없는 부분만 작성하였습니다.  \n\n## CHAPTER 6\n\n-  203p ABCharacter.cpp Tick() \n\nFrom\n```cpp\nSpringArm-\u003eRelativeRotation = FMath::RInterpTo(SpringArm-\u003eGetRelativeRotation(), ArmRotationTo, DeltaTime, ArmRotationSpeed)\n```\nTo\n```cpp\nSpringArm-\u003eSetRelativeRotation(FMath::RInterpTo(SpringArm-\u003eGetRelativeRotation(), ArmRotationTo, DeltaTime, ArmRotationSpeed));\n```\n\n- 204p ABCharacter.cpp ViewChange() \n\n\nFrom\n```cpp\nGetController()-\u003eSetControlRotation(SpringArm-\u003eRelativeRotation);\n```\nTo\n```cpp\nGetController()-\u003eSetControlRotation(SpringArm-\u003eGetRelativeRotation());\n```\n\n\n## CHAPTER 8\n- 272p 동작하는 4.25.4 버전의 montage UI \n![montage](/img/fixed.png)\n\n- NextAttackCheck 노티파이의 위치가 한 섹션이 끝나는 지점에 가까워질수록 노티파이실행-\u003e다음섹션 명령을 내려도 OnMontageEnded 가 실행되서 콤보가 안될 확률이 높다. (출처 - https://blackpinkjisoo.tistory.com/17)\n\n\n## CHAPTER 11\n- 358p ABGameInstance.cpp\n\nFROM\n```cpp\n  ABCHECK(ABCharacterTAble-\u003eRowMap.Num()\u003e0);\n```\nTO\n```cpp\n  ABCHECK(ABCharacterTAble-\u003eGetRowMap().Num()\u003e0);\n```\n\n## CHAPTER 12\n- 399p ABAIController.h\n\nFROM\n```cpp\n  virtual void Possess(APawn* InPawn) override;\n  virtual void UnPossess() override;\n```\nTO\n```cpp\n  virtual void OnPossess(APawn* InPawn) override;\n  virtual void OnUnPossess() override;\n```\n\n- 400p ABAIController.cpp\n\nFROM\n```cpp\nvoid AABAIController::Possess(APawn* InPawn)\n{\n\tSuper::Possess(InPawn);\n\t...\n}\n\nvoid AABAIController::UnPossess()\n{\n\tSuper::UnPossess();\n\t...\n}\n```\nTO\n```cpp\nvoid AABAIController::OnPossess(APawn* InPawn)\n{\n\tSuper::OnPossess(InPawn);\n\t...\n}\n\nvoid AABAIController::OnUnPossess()\n{\n\tSuper::OnUnPossess();\n\t...\n}\n```\n\n\n\n- 444p\n```cpp\npublic:\n\t...\n\tvoid Attack();\n\tFOnAttackEndDelegate OnAttackEnd;\n\nprivate:\n\t...\n\t// 원래 선언되어있던 Attack 함수 주석 처리하거나 없애기\n\t/*void Attack();*/ \n```\n\n## Chapter 13\n- 470p \n- ... 생략됨 , 기존에 있던거 지우지말기\n```cpp\nvoid AABCharacter::BeginPlay()\n{\n\tSuper::BeginPlay();\n\n\t...\n}\n```\n\n## Chapter 14\n\n- 505,6,7p\n\n\nFROM\n```cpp\nbCanBeDamaged = false;\nbCanBeDamaged = true;\n```\nTO\n```cpp\nSetCanBeDamaged(true);\nSetCanBeDamaged(false);\n\n```\n\n\n- 510p\n\n\nFROM\n```cpp\nvoid AABAIController::Possess(APawn* InPawn)\n{\n\tSuper::Possess(InPawn);\n}\n```\nTO\n```cpp\nvoid AABAIController::OnPossess(APawn* InPawn)\n{\n\tSuper::OnPossess(InPawn);\n}\n\n```\n\n\n- 538p\n\nFROM\n```cpp\nfloat AABCharacter::TakeDamage(float DamageAmount, FDamageEvent const\u0026 DamageEvent, AController* EventInstigator, AActor* DamageCauser)\n{\n\t...\n\tauto ABPlayerController = Cast\u003cAABPlayerController\u003e(EventInstigator);\n\tABCHECK(nullptr != ABPlayerController, 0.0f);\n\tABPlayerController-\u003eNPCKill(this);\n}\n```\nTO\n```cpp\nfloat AABCharacter::TakeDamage(float DamageAmount, FDamageEvent const\u0026 DamageEvent, AController* EventInstigator, AActor* DamageCauser)\n{\n\t...\n\tauto instigator = Cast\u003cAABPlayerController\u003e(EventInstigator);\n\tABCHECK(nullptr != instigator, 0.0f);\n\tinstigator-\u003eNPCKill(this);\n}\n\n```\n\n## Chapter 15\n\n- 597p\n\nFROM\n```cpp\nif (bIsPlayer)\n\t{\n\t\tauto ABPlayerState = Cast\u003cAABPlayerState\u003e(PlayerState);\n\t\t\n\t}\n```\nTO\n```cpp\nif (bIsPlayer)\n\t{\n\t\tauto ABPlayerState = Cast\u003cAABPlayerState\u003e(GetPlayerState());\n\t\t\n\t}\n```\n\n### Contribution\n- 정오표 http://www.acornpub.co.kr/book/unreal-c#errata\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmarthug%2Fue4-cpp-book","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmarthug%2Fue4-cpp-book","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmarthug%2Fue4-cpp-book/lists"}