본문 바로가기

Unreal/개인플젝

11.25 애님비피, 캐릭터스테이트, 클래스 쪼개기

 

11.25 오늘의 작업

1. 일반유닛과(AMLUnit) 스폰 메인캐릭터(AMLSummoner)를 드디어 쪼갰다.

스포너컨포넌트는 Summoner에만 붙여줬다.

 

2. 너무 허접해보여서 비웃음을 사니까 애니메이션을 달아주고

캐릭터 스테이트도 만들어줬다.

 

근데 유닛들이 드럽게 느리게 움직이는데 모션은 전력질주라서 더 우스워진 것 같다.

 

우선 블랜딩쪽은 신경쓰지 않기로 하고  캐릭터 스테이트만 붙여줬다.

UENUM(BlueprintType)
enum class EMLCharacterState : uint8
{
	None,
	Idle,
	Walk,
	Attack,
	Damaged,
};

 

계속 [Error]enum size is larger than a byte.라는 에러로그가 떠서 봤더니 이넘타입에 uint8   안붙여줘서 그렇더라. 조심하기....

 

 

애님비피를 Enum으로만 조절하려니까 스레드세이프 경고가 떴다.

 

 

@@... 일단 경고이므로 다음날 알아보기로 하자!

 

3. 메인캐릭터 뒤에도 스폰되는게 신경쓰여서 위치를 제한해줬다.

 

FTransform UMLCharacterSpawnComponent::GetSpawnTransform()
{
	APlayerController* PlayerContorller = UGameplayStatics::GetPlayerController(this, 0);
	if (PlayerContorller == nullptr)
	{
		return FTransform();
	}
	FVector BaseVector  = GetOwner()->GetActorLocation();
	FVector RandomUnitVector = FMath::VRand();
	float RandomDistance = FMath::FRandRange(SpawnMinRadius, SpawnMaxRadius);
	//플레이어 뒤로 스폰되지 않도록.
	FVector SpawnStartOffset = GetOwner()->GetActorForwardVector() * SpawnMaxRadius * 2;
	FVector  ResultVector = BaseVector + SpawnStartOffset + RandomDistance * RandomUnitVector;
	ResultVector.Z = BaseVector.Z;
	//FRotator ResultRotator = PlayerContorller->GetControlRotation();//GetOwner()->GetActorRotation();
	//ResultRotator.Roll = 0.f;
	//ResultRotator.Pitch = 0.f;
	//ResultRotator.Yaw -= 90.f;
	return FTransform(FRotator::ZeroRotator, ResultVector);
}

 

근데 가끔 애꿎은 땅속으로 스폰될때가 있다. Z 값을 맞춰줘도 그렇기 때문에 이유를 알아봐야겠다.!

 

 

 

https://github.com/siyeon-lee/Sample/tree/master

 

GitHub - siyeon-lee/Sample

Contribute to siyeon-lee/Sample development by creating an account on GitHub.

github.com

엇 언제  main/master로 브랜치가 쪼개졌을까.. 뭔가 실수한거같다.-

'Unreal > 개인플젝' 카테고리의 다른 글

공방. 충돌  (1) 2023.11.29
업데이트  (0) 2023.11.24
이벤트시스템  (1) 2023.11.24
언리얼버그속상해 - ActorComponent가 BeginPlay 에서 null일때  (2) 2023.09.07
인풋컨포넌트 분리함  (0) 2023.09.04