2019 ソフトウェア設計及び演習用の班Wiki

19::gr04::メモ

判定方法

  • ノーツが下のバーに重なったタイミングで指定されたキーを操作する
    • バーはゲームする人のタイミングの目安
    • 背景と同化
  • 秒数で判定する方法 ←決定
  • ノーツの場所で判定する方法

Enter押しっぱ問題解決策?

画面遷移時に使う関数を

game_start(game);

から

var waitAmin = function(){
    game_start(game);
}
setTimeout(waitAmin, 1000);

に書き換えて待機時間を発生させてみた.
これでEnterを少し長く押していても大丈夫になるが,他の操作は受け付けてしまうため,改善策求む.

解決策・改

enterframeを使う関数の前にストップ用の変数 stop = 0(名前は何でもいい)を宣言する.
ループ条件を stop == 0 にし,setTimeoutの前にstop = 1を代入してみた.
そうすると操作を受け付けない待機時間を発生させることができる.
動作確認はしたけど,他の画面で使って何かエラー吐いたらごめんね.

var stop = 0;
nyanko.on('enterframe', function(e){
  if(stop == 0){
    if(game.input.enter){
      stop = 1;
      var waitAmin = function(){
        game_start(game);
      }
      setTimeout(waitAmin, 1000);
    }
    // ほかの動作は省略
});

by優菜子

解決策・改・改

setTimeoutなんて面倒な関数を使う必要はなかった.
要は人間がキーを離す前にenterframe内でEnterの入力を感知してしまうからダメなのだ.

var timer = 0;
nyanko.on('enterframe', function(e){
  timer++;
  if(timer > 10){  // ここに入る数字は適宜調整
    if(game.input.enter){
      timer = 0;
      game_start(game);
  }
});

このように書くことで,最初にこの関数が呼び出されてから10フレーム以内にgame_start(game)を実行することはなくなるのである.
待機時間はテキトーなので(おそらく10フレームじゃ長い)どのくらい待機時間を作ればいいかは各自検証してほしい.
by優菜子

十字キー操作

game_startScene.on('upbuttondown', function(ev){
  // 動作は省略
}

のように,game.inputでキー操作を検知するのではなく,buttondownをシーンに発生するイベントとしてキー操作を検知すれば,おしっぱにしても変に反応することはなさそう.(長押しもbuttonup系で対応できそうだが,時間がなさすぎるので省略) この方法は十字キーには使えるが,EnterやBackSpaceには使えないっぽい.

7/19追記

enchant.jsで指定されたキー以外でも,キーバインドを設定しておけばbuttondownはイベントとして使えることが判明した.
たとえば,

core.keybind(13, "enter");

のように宣言しておけば,

scene.on('enterbuttondown', function(ev){ /* 動作は省略 */}

のように指定キーの入力をイベントとして扱える.
ただし,ボタン押下イベントはSceneまたはCoreでしか発行できないので注意.
by優菜子

使えそうな素材

  • フォント(enchant.jpのフリー素材)
  • BGM(フリーBGMサイト、タイトルに良さそう)
  • BGM(フリーBGMサイト、データ画面やドレッシングルーム画面に良さそう)

音ゲーの参考になりそう


最終更新日:2019/07/19 17:59:03