Giter Club home page Giter Club logo

ue4-cpp-book's Introduction

UE4-CPP-Book

이득우의 언리얼 C++ 게임 개발의 정석 4.25.4 버전으로 진행했을때 막히는 부분 정리. 정오표에 없는 부분만 작성하였습니다.

CHAPTER 6

  • 203p ABCharacter.cpp Tick()

From

SpringArm->RelativeRotation = FMath::RInterpTo(SpringArm->GetRelativeRotation(), ArmRotationTo, DeltaTime, ArmRotationSpeed)

To

SpringArm->SetRelativeRotation(FMath::RInterpTo(SpringArm->GetRelativeRotation(), ArmRotationTo, DeltaTime, ArmRotationSpeed));
  • 204p ABCharacter.cpp ViewChange()

From

GetController()->SetControlRotation(SpringArm->RelativeRotation);

To

GetController()->SetControlRotation(SpringArm->GetRelativeRotation());

CHAPTER 8

  • 272p 동작하는 4.25.4 버전의 montage UI montage

  • NextAttackCheck 노티파이의 위치가 한 섹션이 끝나는 지점에 가까워질수록 노티파이실행->다음섹션 명령을 내려도 OnMontageEnded 가 실행되서 콤보가 안될 확률이 높다. (출처 - https://blackpinkjisoo.tistory.com/17)

CHAPTER 11

  • 358p ABGameInstance.cpp

FROM

  ABCHECK(ABCharacterTAble->RowMap.Num()>0);

TO

  ABCHECK(ABCharacterTAble->GetRowMap().Num()>0);

CHAPTER 12

  • 399p ABAIController.h

FROM

  virtual void Possess(APawn* InPawn) override;
  virtual void UnPossess() override;

TO

  virtual void OnPossess(APawn* InPawn) override;
  virtual void OnUnPossess() override;
  • 400p ABAIController.cpp

FROM

void AABAIController::Possess(APawn* InPawn)
{
	Super::Possess(InPawn);
	...
}

void AABAIController::UnPossess()
{
	Super::UnPossess();
	...
}

TO

void AABAIController::OnPossess(APawn* InPawn)
{
	Super::OnPossess(InPawn);
	...
}

void AABAIController::OnUnPossess()
{
	Super::OnUnPossess();
	...
}
  • 444p
public:
	...
	void Attack();
	FOnAttackEndDelegate OnAttackEnd;

private:
	...
	// 원래 선언되어있던 Attack 함수 주석 처리하거나 없애기
	/*void Attack();*/ 

Chapter 13

  • 470p
  • ... 생략됨 , 기존에 있던거 지우지말기
void AABCharacter::BeginPlay()
{
	Super::BeginPlay();

	...
}

Chapter 14

  • 505,6,7p

FROM

bCanBeDamaged = false;
bCanBeDamaged = true;

TO

SetCanBeDamaged(true);
SetCanBeDamaged(false);
  • 510p

FROM

void AABAIController::Possess(APawn* InPawn)
{
	Super::Possess(InPawn);
}

TO

void AABAIController::OnPossess(APawn* InPawn)
{
	Super::OnPossess(InPawn);
}
  • 538p

FROM

float AABCharacter::TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)
{
	...
	auto ABPlayerController = Cast<AABPlayerController>(EventInstigator);
	ABCHECK(nullptr != ABPlayerController, 0.0f);
	ABPlayerController->NPCKill(this);
}

TO

float AABCharacter::TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)
{
	...
	auto instigator = Cast<AABPlayerController>(EventInstigator);
	ABCHECK(nullptr != instigator, 0.0f);
	instigator->NPCKill(this);
}

Chapter 15

  • 597p

FROM

if (bIsPlayer)
	{
		auto ABPlayerState = Cast<AABPlayerState>(PlayerState);
		
	}

TO

if (bIsPlayer)
	{
		auto ABPlayerState = Cast<AABPlayerState>(GetPlayerState());
		
	}

Contribution

ue4-cpp-book's People

Contributors

smarthug avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ue4-cpp-book's Issues

432p 혹시나 어려움 겪으실까봐 알려드립니다.

먼저 여기까지 오시지 않았다면 여기까지 오신 후에 이 글을 읽어보시길 추천드립니다.

PossessedBy()를 보면 플레이어 컨트롤러가 빙의를 했는지 AI컨트롤러가 빙의했는지에 따라 로직이 갈리는데 왜 플레이어 컨트롤러가 빙의하면 SetControlMode(EControlMode::Diablo)를 했는지 궁금하실 수도 있습니다.

저 같은 경우에는 컨트롤 모드는 구현안해서 그 줄을 지웠었는데 제 캐릭터가 이상하게 돌아버리는 문제가 생겼었는데요, 단도직입적으로 말씀드리면 AI 컨트롤러는 플레이어 컨트롤러가 빙의하기전 빙의됩니다. 즉, 캐릭터가 2개가 있으면 먼저 AI 컨트롤러는 그 2개의 캐릭터에 빙의하고 플레이어 컨트롤러가 그 2개중 하나를 빙의하기 때문에 문제가 생겼었습니다.

이해가 되실련지 잘 모르겠는데... 저처럼 SetControlMode(EControlMode::Diablo)를 지워보시면 이해가 가리라 생각합니다.
책에는 이런 내용이 없어요... 진짜 진심 너무 불친절한 책

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.