Help us understand the problem. What is going on with this article?

タッチとマウスが混在する環境でハマったこと (unity、Android)

前提

  • unity 2018.4.2f1
  • Android 6, 9
  • Bluetoothマウス
  • マウスは、複数ボタンあってもポインターは一つなので、単一のポインティングデバイスと見なします。
  • タッチは、個々の指が独立してポイント可能なので、指毎に個別のポインティングデバイスと見なします。

やろうとしたこと

  • タッチとマウスの両方で使えてマルチタッチでも支障のない排他制御を実現しようとしました。
  • 最初に操作されたポインティングデバイスに制御を占有させ、後から操作されたデバイスを排除しようとしました。 (先優先)

ハマったこと

  • Androidでは、マウス操作中にタッチするとマウスカーソルが消え、タッチ操作中にマウスを動かすだけでマウスカーソルが出現します。
  • この切り替わりの際には、unityのポインターコールバックが正しく発火しないようです。
  • 例えば、マウスでドラッグ中にタッチされた場合に、既にマウスボタンが押されていないのにOnDragが呼ばれ続ける等の症状が出ました。

やったこと

  • 新たにデバイスが操作された際に、既に他のデバイスが処理中であったら、先行デバイスの処理を強制終了させて、後行デバイスが新たに処理を開始するようにしました。 (後優先)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away