고도엔진에서 DrawLine 방법 및 월드 공간에 드로우 방법 - Whitmem
고도엔진에서 DrawLine 방법 및 월드 공간에 드로우 방법
Game Development
2025-02-02 00:15 게시 eaf69c6c468b6a617a7b

0
0
59
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
월드 공간에서 DrawLine 등의 처리 방법
화면상의 마우스 포인터가 존재하는 위치를 클릭하면 해당 지점으로 날아가는 것을 구현하고자 하였다. 고도 엔진에서는 내부적으로 DrawLine 이라는 함수를 제공하는데, 이 함수는 노드의 로컬 좌표계를 기준으로 그려지기 때문에 월드 공간에서 그리기 위해 원점에 존재하는 어떤 노드를 생성하고 해당 노드에서 그리기를 진행해야 한다.
나 같은 경우 DrawCanvas 라는 Node2D 객체를 생성하고, 이 노드에 스크립트를 생성하였다.
이 노드 2D 공간에서 _Draw를 재정의하고 해당 공간안에서 DrawLine 을 수행한다. _Draw 는 내부적으로 렌더링하는 부분을 재정의하는 것으로, 이 부분에 드로우를 해주면 화면에 정상적으로 렌더링된다. 다만 DrawLine 에 넣는 startVector, endVector 는 로컬 좌표계 기준이기 때문에 노드 좌표를 기준으로 정의해야 한다. 하지만 여기서는 DrawCanvas 라는 노드를 만들고 이 노드를 월드 공간 0,0 에 정의했기 때문에 사실상 로컬 좌표가 월드 좌표와 동일하다.
여기서는 클릭한 지점을 그리는 것이 주요 목표인데, 클릭 이벤트는 다른 노드에서 수행했기 때문에 싱글톤 클래스를 사용해서 클릭한 지점을 한 공간에서 공유를 하고, 그 정보를 가져와서 drawCanvas는 그리기만 수행한다.
하지만 동적인 환경에서는 정상적으로 그려지지 않는 것을 확인할 수 있다.
_Draw()라는 공간은 매 순간 항상 호출되는 것이 아니라 드로우 변경 사항이 있는 경우에만 시스템이 호출하기 때문에 변경 사항이 그려지지 않는 것이다.
Process 함수는 매 프레임마다 호출되기 때문에 이 공간에서 QueueRedraw를 통해 로컬 노드에 그리기를 요청하면 된다.
정상적으로 그려지는 것을 확인할 수 있다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.