最終確認日
Godotでモバイル端末のキーボードの高さの取得する
要点
取得方法
# スクリーン座標系のキーボードの高さを取得
var keyboard_height: float = DisplayServer.virtual_keyboard_get_height()
# スクリーン座標系の画面サイズを取得
var screen_size: Vector2 = DisplayServer.screen_get_size()
# Viewport座標系の画面サイズを取得
var viewport_size: Vector2 = get_viewport().get_visible_rect().size
# Viewport座標系とスクリーン座標系のスケールを計算
var scale_y: float = screen_size.y / viewport_size.y
# Viewport 座標系に変換する
var keyboard_height_in_viewport: float = keyboard_height / scale_y
VirtualKeyboardHelper
扱いやすいように、Autoloadに登録するヘルパーを作る。
VirtualKeyboardHelper.tscn
をControl
を親にして作成virtual_keyboard_helper.gd
スクリプトをアタッチVirtualKeyboardHelper.tscn
をAutoloadに登録する
virtual_keyboard_helper.gd
virtual_keyboard_helper.gd
# Autoload
# class_name VirtualKeyboardHelper
extends Control
# キーボードの高さをviewport座標系に変換して返します.
var keyboard_height_in_viewport: float:
get:
var screen_size: Vector2 = DisplayServer.screen_get_size()
var viewport_size: Vector2 = get_viewport().get_visible_rect().size
var scale_y: float = screen_size.y / viewport_size.y
var keyboard_height: float = DisplayServer.virtual_keyboard_get_height()
var keyboard_height_in_viewport: float = keyboard_height / scale_y
return keyboard_height_in_viewport
# キーボードの上端のy座標をviewport座標系で返します.
var keyboard_top_in_viewport: float:
get:
var viewport_size: Vector2 = get_viewport().get_visible_rect().size
var keyboard_top_in_viewport: float = viewport_size.y - keyboard_height_in_viewport
return keyboard_top_in_viewport
SubViewportを使う時はAutoloadに登録しないほうがいいかもしれない。
関連ノート
- Godotでモバイル向けの画面サイズ取得
- Godotでモバイル向けのセーフエリア対応
- GodotでiOSのキーボードに追従するツールバーを実装する

公開日
更新日