9

これを機能させるためにGoogleで非常に多くのサイトを検索しましたが、誰もこれをどこにも持っていないようです.もしそうなら、それは私のプログラムでは機能していません...私が達成しようとしているのはプレーヤーを持つことですプレイヤーが殴られたとき、最初に殴られてから2回目に殴られるまでに「x」の時間がかかることに反省します。

だから私はBoolean "hit" = falseと 彼がヒットすると、 に変わりますtrue。つまり、再び false に変更されるまで、彼は再び攻撃を受けることはありません。

そのため、プログラムで関数を設定して「x」秒の「タイマー」を設定しようとしています。IF hit = trueそのタイマーが「x」秒に達すると、ヒットは false に戻ります。

誰にもアイデアはありますか?

ありがとう!!

4

1 に答える 1

15

簡単なオプションは、millis()を使用して手動で時間を追跡することです。

次の 2 つの変数を使用します。

  1. 経過時間を保存するもの
  2. 必要な待機/遅延時間を保存するもの

draw() メソッドでは、現在の時間 (ミリ単位) と以前に保存された時間の差が遅延よりも大きい (または等しい) かどうかを確認します。

もしそうなら、これはあなたが与えられた遅延のために何でもし、保存された時間を更新する合図になります:

int time;
int wait = 1000;

void setup(){
  time = millis();//store the current time
}
void draw(){
  //check the difference between now and the previously stored time is greater than the wait interval
  if(millis() - time >= wait){
    println("tick");//if it is, do something
    time = millis();//also update the stored time
  }
}

画面上の「針」を更新するわずかなバリエーションを次に示します。

int time;
int wait = 1000;

boolean tick;

void setup(){
  time = millis();//store the current time
  smooth();
  strokeWeight(3);
}
void draw(){
  //check the difference between now and the previously stored time is greater than the wait interval
  if(millis() - time >= wait){
    tick = !tick;//if it is, do something
    time = millis();//also update the stored time
  }
  //draw a visual cue
  background(255);
  line(50,10,tick ? 10 : 90,90);
}

セットアップ/ニーズに応じて、このようなものを再利用可能なクラスにラップすることを選択できます。これは基本的なアプローチであり、Android および JavaScript のバージョンでも機能するはずです (ただし、javascript では setInterval() があります)。

FrankieTheKneeMan が提案したように、Java のユーティリティの使用に興味がある場合は、TimerTaskクラスが利用可能であり、そこには多くのリソース/例があると確信しています。

次のデモを実行できます。

var time;
var wait = 1000;

var tick = false;

function setup(){
  time = millis();//store the current time
  smooth();
  strokeWeight(3);
}
function draw(){
  //check the difference between now and the previously stored time is greater than the wait interval
  if(millis() - time >= wait){
    tick = !tick;//if it is, do something
    time = millis();//also update the stored time
  }
  //draw a visual cue
  background(255);
  line(50,10,tick ? 10 : 90,90);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.4/p5.min.js"></script>

于 2012-09-14T09:25:21.810 に答える