Godot에 노드 2D의 Gizmo 그리기

5059 단어 Godot
개시하다
노드 2D에 기즈모를 그리고 싶어 잘 어울려 정보를 취합했다.
작업 환경
Godot Engine 3.2.1
메모지
Spatial Gizmo는 2D에서 움직이지 않음
SpatialGizmo
https://docs.godotengine.org/ja/stable/tutorials/plugins/editor/spatial_gizmos.html
처음에는 이것인 줄 알았는데 해보니까 꼼짝도 안 하고 짜증나 죽겠어요.
Spatial은 3D 노드이므로 노드 2D로 움직이지 않는 것이 당연합니다.그나저나 Godot4부터 Spatial은 Node 3D로 이름을 바꾼 것 같습니다.
기즈모 2D 버전 없어요.
EditorPlugin
https://docs.godotengine.org/en/stable/classes/class_editorplugin.html
add Editor Pluginspatial_gizmo_pluggin이 존재하지만ddnode2d_gizmo_pluggin이 없어서 2D 기즈모가 없는 것 같아요.
해결: _draw에서 그리기
다른 Camera 2D와 같은 2D 노드가 어떻게 Editor 화면에 그려졌는지 궁금해서 GiitHub의 출처를 봤어요.
감사합니다.DRAW에 그린 것 같아요.
엔진의 진정한 심정은 원본 코드에 쓰여 있다.
GDScrite에서는 처음에 _notification를 추가한 후 tool로 그리면 된다.
Node 2D 주위에 사각형을 그리려면 다음 코드를 사용합니다.
tool
extends Node2D

export var left   := -100
export var top    := -100
export var right  := 100
export var bottom := 100

func _process(delta):
    if Engine.editor_hint:
        update()

func _draw():
    if Engine.editor_hint:
        var color := Color(1.0, 0.0, 0.0)
        draw_line(Vector2(left, top), Vector2(right, top), color)
        draw_line(Vector2(right, top), Vector2(right, bottom), color)
        draw_line(Vector2(right, bottom), Vector2(left, bottom), color)
        draw_line(Vector2(left, bottom), Vector2(left, top), color)
Editor에서 Gizmo를 그릴 수 있습니다.

주의점
  • _draw도 실행할 때 실행되기 때문에 _process에서 제어는 Editor에서만 실행됩니다.
  • Engine.editor_hint 호출_process 방식에서 프레임마다 묘사 처리를 하기 때문에 Gizmo가 그리는 데 영향을 주는 파라미터를 속성으로 설정하고 그 중에서 update()를 하는 것이 예의인 것 같다.
  • 좋은 웹페이지 즐겨찾기