공부 정리/API 프로젝트 (별의 커비) 콘텐츠

4. Actor(skill) - Sir

CE : 하랑 2024. 3. 3. 15:34

 

 

enum class ESirOwner
{
	None,
	SirMonster,
	kirby
};

 

 

1. 커비가 사용자 일 때 충돌 구분

if (Owner == ESirOwner::kirby)

 

- 몬스터 충돌 체크

 

2. 몬스터가 사용자 일 때 충돌 구분

else if (Owner == ESirOwner::SirMonster)

 

- 커비 충돌 체크

 

 

3. 커비가 부메랑을 받지 못했을 때 특정 범위를 벗어나면 자동 삭제되게 설정

if (true==LRCheck && XR.iX()<GetActorLocation().iX()) // 돌아오는 방향은 오른쪽 -> 부메랑이 오른쪽 방향으로 설정한 범위보다 커질때 동작
{
	MainPlayer->SetSirUse(false); 
	SSir.Off();
	Destroy();
}
else if (false==LRCheck &&  XL.iX()>GetActorLocation().iX()) // 돌아오는 방향은 왼쪽 -> 부메랑이 왼쪽 방향으로 설정한 범위보다 작을 때 동작
{
	MainPlayer->SetSirUse(false);
	SSir.Off();
	Destroy();
}

 

- 커비는 부메랑을 받아야 변신을 풀거나 공격을 할 수 있게 설정했다. 못받는 경우도 있을 수 있기에 자동 삭제 기능 추가

 

 

4. 커비가 받는 경우 -> 몬스터도 동일

 

- 사용자 커비

// 커비가 받아낼때
if (true == SirCollision->CollisionCheck(ECollisionOrder::kirby, Result))
{
	MainPlayer->SetSirUse(false);
	SSir.Off();
	Destroy();
		
}

 

- 사용자 몬스터

else if (true == SirCollision->CollisionCheck(ECollisionOrder::SirMonster, Result))
{
	UCollision* Collision = Result[0];
	AActor* Ptr = Collision->GetOwner();
	AMonster_Sir* Monster = dynamic_cast<AMonster_Sir*>(Ptr);

	Monster->SetSirUse(false);
	SMSir.Off();
	Destroy();
}