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

アバター
カービィ★KIRBY ◆lWKKTX22SPNG
2018/10/3 18:36
質問
1f以外のケースでも対応できるボタン入力を自前で用意するのですが
プチコン標準のBUTTON(2)または(3)は1f(1/60sec)での動作を前提にしているので処理オチの際の動作が不安なため、BUTTON(0)を毎フレームごとに見て自前のボタン押下瞬間を取得しようとしていますが、
以下のコードだと「複数のボタンを押しっぱなした状態からボタンを1つ離すと、離されたあとに押されてたボタンが押された瞬間として取られる」状況になってしまいます。
何かいい実装はないものでしょうか?

BTN_PRESS%=BUTTON(0)
IF(BTN_PRESS_OLD% - BTN_PRESS%)THEN
'おされた しゅんかん
ENDIF

コメント

アバター
こういち 2018/10/3 18:42 ◆ou0jbJnEJ0Kb
ANDを使うといいと思います。多分。
BTN_PRESS_OLD%=BTN_PRESS%
BTN_PRESS%=BUTTON()
BTN2=NOT BTN_PRESS_OLD% AND BTN_PRESS%
BTN3=BTN_PRESS_OLD% AND NOT BTN_PRESS%
アバター
カービィ★KIRBY 2018/10/3 20:01 ◆lWKKTX22SPNG
うまくいきました!
ありがとうございます!!
アバター
しんいち 2018/10/3 20:02 ◆lHy.hAWXbthn
大小を比較すれば簡単だと思います。
IF BTN_PRESS%>BTN_PRESS_OLD%THEN'押した瞬間
IF BTN_PRESS%<BTN_PRESS_OLD%THEN'離した瞬間
アバター
おちゃめ 2018/10/6 14:12 ◆jH1opV6FnGyx
「押した瞬間のボタン」というのは「前回押してない」かつ「今回押した」ボタンとなります。
前回押してないボタンというのは「NOT(前回押したボタン)」となります。
したがって、
A=B
B=BUTTON()
C=NOT A AND B
とすることで、押した瞬間のボタンが変数Cに入るわけです。
http://ochameclub.web.fc2.com/petitcom3/lecture/vsync.htm#2
アバター
こういち 2018/10/8 11:22 ◆ou0jbJnEJ0Kb
あと大小関係で判定する方法。今のプチコンだと簡潔でいい書き方ですが、
今後アップデートでボタンが32個になったとき上手く動かない可能性があるってMIKIさんが言ってた。
アバター
よせなべ 2018/10/8 14:16 ◆T5FQoqVM2Q6m
そもそも現状でも「ボタンを押す」「別のボタンを離す」という操作が同時に起こった時に、正しく判定出来ない場合がありますね>大小
アバター
しんいち 2018/10/9 19:40 ◆lHy.hAWXbthn
そっか。複数ボタン同時変化のときは、大小比較では判定できないケースがあり得ましたね。いつもボタン1つずつに対して変更前後の変数を用意してたのでうっかりしてました。

コメントを書く

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

- WEB PATIO -