Godotで画面のタッチ判定が実機やエミュレータでのみうまくいかない場合があった。エディタでの再生では問題ない。スプライトをタッチすると選択状態になるのだが、なぜか実機でだけ反応しない。
詳しく調べてみると、どうも実機でのみ1回のタッチだけで判定が2連続で重複して来ていることがわかった。原因だが、そもそも下記のように実機のタッチでもエディタの再生でのマウスクリックでも動作するようにしていた。
func _input(event):
if (event is InputEventMouseButton or event is InputEventScreenTouch) and event.pressed:
エディタだと問題ないのだが、エミュレータだとどうも両方のイベントが来てしまうらしく、連打状態になっていた。選択したスプライトを再度タッチすると選択解除という仕様にしていたので、それで何も反応していないように見えていた。
ということで下記のようなメソッドを作成してチェックするようにした。
func is_touched(event):
var os = OS.get_name()
if os == "iOS" or os == "Android":
return event is InputEventScreenTouch
return event is InputEventMouseButton
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント