본문 바로가기
728x90
반응형

How To Open the Sliding Door with Button6

[UnrealEngine] 문 버튼 색깔 바꾸기 buttonMesh->SetVectorParameterValueOnMaterials(FName("doorStateColor"), FVector4(0.505f, 0.015f, 0.00974f, 1)); 생성자에서 Material에 코드로 접근할 수 있다. Material 안에서 Parameter을 만들어주고, 그 Parameter 이름을 doorStateColor 라고 해줄 것이다. 이름이 같아야한다. 안그러면 엔진에서 material의 색을 찾아낼 수 없다. 원래 문 버튼의 색은 빨간색으로 해 놓고, 퀴즈를 다 풀었을 때 버튼의 불빛이 푸른 빛으로 바뀌게 할 것이다. 그런데 그것을 해결하기 전 이 문 버튼의 활성화 부분에서 치명적인 버그가 있었다. 그 버그를 해결하면서 이 문 색깔이 바뀌게 하기 위한 작.. 2023. 6. 10.
[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (5) 게임의 퍼즐 요소들과 레벨들을 모두 한 곳에 모아놓고 테스트를 진행하는 과정에서 문이 열리는 방향에 대한 이슈가 발생했었다. 그래서 처음에는 열리는 방향이 다른 문들에 대한 클래스를 따로 만들어주었는데, 코드가 겹쳐(?)서 혼선이 발생하는 듯한 느낌이 들어 정리해주었다. 하나의 클래스를 가지고 여러 문 BP를 만들어주어 관리했다. BP 는 같은 클래스에서 상속 받아 여러개를 만들고, 서로 다른 값들을 적용해줘야하는 것들은 Instance 상에서 관리할 수 있도록 변수를 만들어주었다 처음에는 mesh 자체의 relative Location방향으로 조정해줄까 하다가, 아니다 싶어서 다른 방법을 생각해내었다. 일단은 회전되어있는 문 자체는 현재 2가지이다. 0도 상태의 문과 90도 회전해있는 문, 그래서 이 .. 2023. 5. 20.
[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (4) 스테이지를 클리어했을 때 버튼을 누르면 레벨에 배치된 모든 문이 열고 닫히도록! 이 코드를 완성하기까지 델리게이트라는 단어를 너무 너무 많이 부르고 외쳤다. Get All Actors Of Class를 사용해 레벨에 배치된 모든 문들을 찾아주었다. Get Actor Of Class는 반환하는게 있어서 변수에 값을 넣어줄 수 있지만 Get All Actos Of Class는 반환하는게 없기 때문에 따로 변수에 넣어줄 수 없더이다. 그리고 그 안에 있는 outDoorsActors 이것은 헤더에 만들어준 TArray 변수이다. TArray에 레벨에 배치된 문들을 찾아 담아주는 것이다. 그런 다음.. 어떻게 하지...? 고민을 정말 많이 했었다.. 미지의 영역 Delegate 결국 결국 찾아낸 것은 Delega.. 2023. 4. 28.
[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (3) 나를 힘들게 한 bool변수 나를 헷갈리게 한 bool변수 사실 이 어려움의 원인은 역시 나로부터 있다. 사람들과 나의 현 진행상황을 공유하며 피드백을 얻은 결과 내가 생각보다 너무 어렵게 접근하여 풀어가고 있다는 것을 알 수 있었다. 그냥 door-> 이런식으로 접근해도 되었던것같은데 delegate를 사용한다던가 구조 짠 형태가 아쉽지만, 그래도 이번 기회를 통해서 delegate 함수의 사용법도 익힐 수 있었고, 다음 번에 다른 것 구조를 짤 때는 전보다 성장해 있을것이다.. 이전 게시물에서는 버튼을 누르면 문을 열고 닫을 수 있도록 하는 것이었고 https://yeni-0224.tistory.com/entry/UnrealEngine%EB%B2%84%ED%8A%BC%EC%9D%84-%EB%88%84.. 2023. 4. 25.
[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (2) 이제는 Trigger Box에 닿았을 때가 아니라 버튼을 눌렀을 때 문을 열고 닫을 수 있도록 할 것이다. 문을 열고 닫게 하는 Door Button Class를 만들어주었고, 문을 열고 닫도록 Delgate를 사용해서 Door에 문 열고 닫으라는 명령을 전달할 수 있도록 했다. 스테이지가 클리어 되었다는 정보를 Delegate로 받아온 상태, 이 상태에서 플레이어와 버튼이 닿았을 때 문을 열고 닫을 수 있도록 해주었다. Overlap 함수를 호출하는건 BeginPlay에서 하는게 맞지만, 코드를 작성하다보니 Overlap을 호출해주는 함수를 따로 빼주었다. 물론 문제없이 호출도 잘 되고, 문도 잘 움직인다. 정돈이 필요한 상태.. Delegate 함수를 호출하는 것이 아직은 어색하지만 이렇게 또 한발자.. 2023. 4. 24.
[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (1) 현재 VR 게임을 개발 중에 있다. 지난 짧은 기간동안 언리얼엔진을 열심히 공부하고, 정말 이제는 공부한 내용들을 실전 적용해야할 때가 온 것이다. 작은 부분이라도 로직을 짜고, 코딩해나가는 중이다. 극 초반의 내 상태에 비하면 매우 발전했다고 생각하지만, 엔진은 공부해야할 부분이 정말 많기 때문에 긴장을 놓치지 않고 열심히 공부하며 작업하는 중이다. 각 스테이지를 클리어 했을 때, 버튼을 누르면 문이 열리고, 닫히도록 구현할 것이다. 스테이지를 클리어 했는지는 퍼즐을 관리하는 쪽에서 Delegate를 보내줄 것이고, 문쪽에서 그 신호를 받아 문을 열고 닫을 수 있도록 할 것이다. 또 문이 열리고 닫히기 위한 조건들이 또 여러가지 있지만 일단은 문이 열고 닫히도록 하는 것부터 구현할 것이다. 천천히, 차.. 2023. 4. 23.
728x90
반응형