コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
佐藤 瑛太 ◆vjQIdJ7.9/Mk
2018/3/22 14:06
質問
教えて欲しいのです...
ある特定の場所aをタッチするとそこが光るような仕組みを作って、それと同じ仕組みを使ったbという場所を作りました。
しかし、aとbを同時に押すと両方つかずに真ん中の座標がタッチされてる判定になってしまいます。
aとbを同時に押して両方とも光らせる方法を教えてください...

コメント

アバター
佐藤 瑛太 2018/3/22 14:07 ◆vjQIdJ7.9/Mk
プログラムの続きです
アバター
佐藤 瑛太 2018/3/22 14:08 ◆vjQIdJ7.9/Mk
もう一つ
アバター
キルル2 2018/3/22 14:34 ◆rGE712Ruejv7
touch関数でマルチタッチを受け付けられないんですよね
でもおちゃめさんがマルチタッチを受け付けるサブルーチンを作っておいてくれたので、これを写経してみてください
配列tcx,tcyを用意しておけば、呼び出したタイミングで0番目と1番目に座表が入ります
@MTOUCH
RM=20:RL=1
PX=TX:PY=TY
TC=TCHST:TX=TCHX*TC:TY=TCHY*TC
TPO=TPO*TC:TP=TP*TC
TM=(POW(TX-TCX(0),2)+POW(TY-TCY(0),2)<RM*RM/4)+(POW(TX-TCX(1),2)+POW(TY-TCY(1),2)<RM*RM/4)
TL=POW(TX-PX,2)+POW(TY-PY,2)
TLM=TLM+(TL-TLM)*(TL>TLM)
MT=(TL<RL*RL/4)*(TLM>RM*RM/4)*TC*(!TM+!TP)
IF MT THEN TPO=TP+1:TCX(TP)=TX*TPO-TCX(!TP)*TP:TCY(TP)=TY*TPO-TCY(!TP)*TP:TLM=0:TP=!TP
RETURN
アバター
あきと 2018/3/22 15:05 ◆7TEpcjb/rk2E
スマホやiPadと違ってそもそも3DSのタッチパネルは同時に複数のタッチを検出出来るように出来ていません。
おちゃめさんのルーチンも人間にはピッタリ同時に2点をタッチすることがほぼ出来ないだろうという事を考慮して作成されたルーチンだと言うことは押さえておいて下さい。
アバター
佐藤 瑛太 2018/3/22 17:18 ◆vjQIdJ7.9/Mk
はい、ありがとうございます
アバター
シロ 2018/3/22 18:12 ◆g0oUAxBiWqcj
静電式タッチパネルと感圧式タッチパネルの違いの話かな。DSは感圧式を使ってたかな。
アバター
おちゃめ 2018/3/23 1:25 ◆jH1opV6FnGyx
3DSの感圧式のタッチパネルは基本的に1点しか取得できません。2点を同じような強さで押さえた場合には2点の真ん中の辺りの座標が取得されるため「タッチしている2点の座標」を取得することはできません。
とはいえ、1フレームごとにタッチ取得座標を監視していきその変化量を元に判断すれば1点タッチから2点タッチに変ったことは判断が可能になり、「1点から2点に変った瞬間」にタッチ取得座標から2点の座標を求めることが可能になります。
同様な方法で2点から3点に変ったことを判断すれば3点タッチの座標の取得も可能だし、4点タッチの座標の取得も可能です。(ただし、座標数が増えれば増えるほど誤差が大きくなる上に下記の問題もあるため2点が事実上の限界かも)

キルル2さんがプログラムリストを書いてくださっていますが、私のサイトへのリンクを張っておきます。
http://ochameclub.web.fc2.com/petitcom/multi_touch.htm
プチコンmkII用のプログラムなのでプチコン3号ではそのままの状態では動作せず改造が必要になりますが、処理の解説や実際にどのように動くかの動画も貼っているため参考にしてみてください。

しかし、上記のリンク先やあきとさんが書いて下さっているように0点タッチ(タッチしていない状態)から2点タッチに変った場合(1フレームのずれもなく2点がタッチされた場合)にはこの方法では判断ができず2点の座標を求めることはできません。
あくまで擬似的なマルチタッチ判定プログラムに過ぎません。

スマホに用いられている静電容量方式であればマルチタッチに対応可能ですが、仕組み的に精密な座標取得は難しいです。
1点タッチであれば感圧式のタッチパネルの方がタッチ座標取得の面では優れているといえるでしょう。(先が細いペンを使えば1ドットのずれもなくドット打ちが可能になる)
アバター
たんじぇ 2018/3/23 12:26 ◆WDmFkVwZ4yMl
完全に同時に押された場合、中間点はとれるけど同時に押されてるかどうかは判定できないので、完成させようとしているプログラムによっては、おちゃめさんのやりかたを入れたり別の考え方が必要な感じ。

コードからチュウニズムっぽい感じもするのと、音ゲープレイヤーは完全に同時に押せてしまう人が多いので、もし音ゲーを作ろうとしてるなら同時オブジェクトの場合は真ん中の座標を同時押しオブジェクトとして”も”扱う(おちゃめさんのやりかたも入れる)とするプログラムも必要というのも。
(プログラムとしてそのときに同時にタッチされるタイミングかどうか分かる)

ピアノで自由に音を鳴らすプログラムの場合、完全に同時に押された場合は同時かどうかの判断ができないので、おちゃめさんのやりかたをいれたうえで、完全同時押しが出来ないというプログラムにするか、完全同時をした場合は中間の場所をタッチした扱いにするというプログラムにするかというのを決めないとという感じです。
(プログラムとしてそのときに同時にタッチされるタイミングかどうか分からない)
アバター
ツララ 2018/3/23 13:06 ◆ArUdBYOYME1V
物理的に複数のポイントをタッチするんじゃなくて、スプライトか何かで半透明の仮想の指を表示して
Lボタンやスライドパッドと十字キーの複合操作とかで指の本数を増やしたり間隔を調整したりして
タッチスクリーンはタッチのタイミング取りだけに使うとかっていう方法じゃダメなんです?

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -