plitri

[Godot] C2의 scale-in 구현 (반응형)

2017. 3. 11. 12:33학습/Godot 엔진

참고자료


여러 방법이 있겠는데 저는 keep-width와 keep-height를 거꾸로 적용하는 방법으로 갔습니다.

저는 아래 코드를 자동로드(autoload / 싱글톤)에 넣고 구동했습니다. OS.get_window_size()가 모바일에서도 동작하는지는 아직 확인하지 않았습니다.

# https://godotengine.org/qa/9947/responsive-to-fit-multiple-resolutions
# https://sites.google.com/site/dsgodot/code-snippets/viewport-size
extends Node

var min_screen = Vector2(Globals.get("display/width"), Globals.get("display/height"))

func _ready():
	get_tree().connect("screen_resized", self, "_screen_resized");
	_screen_resized()

func _screen_resized():
	var scene_rect = OS.get_window_size()
	# print("DEBUG","Scene resized : " + str(scene_rect) )
	if scene_rect.width > scene_rect.height:
		get_tree().set_screen_stretch( SceneTree.STRETCH_MODE_VIEWPORT, SceneTree.STRETCH_ASPECT_KEEP_HEIGHT, min_screen )
	else:
		get_tree().set_screen_stretch( SceneTree.STRETCH_MODE_VIEWPORT, SceneTree.STRETCH_ASPECT_KEEP_WIDTH, min_screen )
	# print("DEBUG","Scene resized : " + str( get_tree().get_root().get_node("level_player/pause_ui").get_size() ) )

프로젝트 설정은 이렇습니다.

  • width, height 지정
  • stretch_mode - viewport
  • stretch_aspect - keep
  • 씬의 루트 노드는 풀스크린 앵커링된 컨트롤


이제 카메라 세팅하는 법 알아보러 가야...

 /