본문 바로가기
언리얼엔진 개발/VR

[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (5)

by yeni_0224 2023. 5. 20.
728x90
반응형

게임의 퍼즐 요소들과 레벨들을 모두 한 곳에 모아놓고 테스트를 진행하는 과정에서 문이 열리는 방향에 대한 이슈가 발생했었다. 그래서 처음에는 열리는 방향이 다른 문들에 대한 클래스를 따로 만들어주었는데, 코드가 겹쳐(?)서 혼선이 발생하는 듯한 느낌이 들어 정리해주었다. 하나의 클래스를 가지고 여러 문 BP를 만들어주어 관리했다.

BP 는 같은 클래스에서 상속 받아 여러개를 만들고, 서로 다른 값들을 적용해줘야하는 것들은 Instance 상에서 관리할 수 있도록 변수를 만들어주었다

 

처음에는 mesh  자체의 relative Location방향으로 조정해줄까 하다가, 아니다 싶어서 다른 방법을 생각해내었다.

일단은 회전되어있는 문 자체는 현재 2가지이다. 

0도 상태의 문과 90도 회전해있는 문, 그래서 이 문이 0도 회전한 문인지 90도 회전한 문인지 확인하는 bool 변수를만들어주었다. 이 변수는 인스턴스 상에서도 관리할 수 있도록 해주었다.

	UPROPERTY(EditAnywhere, Category = "Door Settings")
	bool isdoorDir;

이 bool값이 true인지 false 인지에 따라 문이 이동하는 방향이 달라질 것이다.

true일 때 x방향으로 이동하게 하고, 그렇지 않 을 때 y방향으로 이동할 수 있도록 했다. 어떤 상태가 bool 변수가 참인 상태인가 지정해주는건 엔진의 인스턴스 창에서 해주면 된다.

나중에 다른 각도의 방향이 더 필요해진 경우, 그 때는 다시 한번 어떻게 할 것인지 생각해보면,

이 bool 값을 이용해서 조건을 잘 잡아주면 되지 않을까 생각한다.

void ADoors::Open()
{
	startPoint = GetActorLocation();
	if(isdoorDir == true)
	{
		endPoint = startPoint + FVector(yOffset, 0, 0);
	}
	else
	{
		endPoint = startPoint + FVector(0, yOffset, 0);
	}
	curveTimeline.PlayFromStart();
	bIsOpenOverlaping = false;	
}

수정된 문

 

728x90
반응형