PCで作ったゲームをスマホでも遊べるようにするときに押さえるのは、指での操作の受け取り方と、カメラの穴を避けた画面の内側にHUDを置くことの2つです。
マウスの感覚のまま作ると、1回のタップでジャンプが2回出たり、右上に置いたポーズボタンがカメラの穴の裏に隠れたりします。縦持ちのつもりで作っても、実機は横向きで起動します。
この記事では、指を番号で覚えて2本指で拡大する書き方と、HUDを欠けた画面の内側へ収める方法を、PCのエディタで確かめながら解説します。
この記事でわかること
- 1タップが2回になる理由と、受け取り口を1つに決める考え方
- 指を番号(
index)の辞書で覚える書き方と、押し続けるボタンの作り方- 2点の距離からピンチの倍率を出す式
- ノッチを避ける余白の作り方と、画面の向きの設定
動作確認環境: Godot 4.7(Windows)
タッチとマウスの違い
マウスのカーソルは、押していなくても画面のどこかにいつも1つあります。指は、押した場所に現れて、離すと消えます。2本、3本と同時に触れることもあります。
この違いがあるのに、Godot のプロジェクトは、指とマウスを行き来させる設定を最初から2つ持っています。場所はプロジェクト設定の Input Devices → Pointing です。
emulate_mouse_from_touch: 既定でオン。指のタッチから、左マウスボタンの入力も作られますemulate_touch_from_mouse: 既定でオフ。オンにすると、PCの左クリックからタッチも作られます
emulate_mouse_from_touch は切らないでください。これがあるおかげで、マウス向けに作った Control が、実機でも指で動きます。そのかわり、1本の指から2種類の入力が届きます。

指が画面に触れた・離れたときに届く知らせが InputEventScreenTouch です。これで自前の処理を書き、同じことをマウスボタンに割り当てたアクション(Input Map で名前を付けた操作)でもやっていると、1タップで両方が走ります。受け取り口はどちらか一方に決めます。
タップ1回で足りるボタンやメニューは、マウス側に任せるのが早道です。Button を置けば、そのまま指で押せます。自前で InputEventScreenTouch を読むのは、2本目の指を扱いたいときです。
指の番号(index)と押し続けるボタン
指には番号が付いています。InputEventScreenTouch と、指を動かしたときに届く InputEventScreenDrag の index がそれで、触れているあいだ同じ番号が付き続けます。最初の1本はたいてい 0 ですが、押した順に 0・1 と並ぶとは決まっていません。先に 0 を離すと、残った指は 1 のままです。
