トピック
ぽんんん koumei-id

【ドラムロール】時間差で減っていく変数はどうすればできますか?【初心者】

変数が-10、ときめてから普通はすぐに-10してしまいますが、 時間差で 変数が-10確定 0.7秒後変数-1…をつづける 変数が-10になったのでストップ をしたいのですが… その間にも他の動作は続けたいです。簡単に言うとRPGのドラムロールの作り方を知りたいです。よろしくお願いします!
0そうだね
プレイ済み
返信[1]
親投稿
みむ*mim hidemimtp
ダメージを受けたときに、  D =10  DT=MAINCNT MOD 42 としておいて、メインループで  IF D>0 && (MAINCNT MOD 42)==DT THEN D=D-1:HP=HP-1 とかすればいいんじゃないでしょうか。 0.7秒=42フレームで、ダメージを受けてすぐに1ダメージ受け、その後は42フレームごとに1ダメージを受け、全部で10ダメージ受けたら終了。
0そうだね
プレイ済み
返信[2]
親投稿
ぽんんん koumei-id
アドバイスありがとうございます! やってみますねー!
0そうだね
プレイ済み
返信[3]
親投稿
ΖΕΧ ZEX256
多分うまくいかない気がする(プチコン速すぎてMAINCNTが連続で同じ値) WAITしてれば大丈夫かも
0そうだね
プレイ済み
返信[4]
親投稿
れい rei-nntnd
真の値と表示してる値を別に記録しておいて、ダメージ受けたり回復したら真の値のみ変更する。 メインループでは数回回る度に1回真の値と表示してる値を比較して、表示してる値と差があったら1だけ近づけた上で画面に再表示する。 マルチスレッドプログラミングとかでも同じような手をよく使う。
1そうだね
プレイ済み
返信[5]
親投稿
ぽんんん koumei-id
今のところなんとか動いている(?)状態です… れいさん>詳しく教えていただきたいです~
0そうだね
プレイ済み
返信[6]
親投稿
れい rei-nntnd
詳しくって。 詳しく書いたじゃん!
0そうだね
プレイ済み
返信[7]
親投稿
ぽんんん koumei-id
あ、すみません、自分の頭が追い付いていなかっただけです; ご迷惑かけました、自分で調べることにします ありがとうございました。
0そうだね
プレイ済み
返信[8]
親投稿
れい rei-nntnd
コード晒すとか、どこがどうわからないのか説明するとか、 教える側も素人なんだから詳しくってだけ言われても俺には無理よ
0そうだね
プレイ済み
返信[9]
親投稿
ぽんんん koumei-id
そうですよね…すみませんでした>< ・メインループがどこまでを指すのかよくわからない(GOTO・GOSUBでどこに置いたらいいのかわからない) ・「数回回る」のカウント方法がよくわからない。メインループがどこまでかわからないからなのですが… カウントはメインループの最初に来たら変数+1ですかね?
0そうだね
プレイ済み
返信[10]
親投稿
みむ*mim hidemimtp
けっこう難しいことをしようとされているのにメインループが分からないというのは意外な・・・とりあえずVSYNCをしている所が1ループ・・・(とも言えない) 私が最初に書いたMAINCNTは、実用するにはちょっと乱暴です。減らないときがあったり、2減ったりする事があると思います。 実際はそのメインループでカウンターとなる変数を+1してき、処理落ちするほどの事をしていなければVSYNC1回で約1/60秒なので、「カウンターの変数 MOD 42・・・」とする方がまだマシです。 それでも厳密には違いますけど、この手の処理で困るほどの誤差ではないかと。 次回アップデートでミリ秒が使えるとの噂を聞いたので、それが出来るようになったらもうちょっと厳密なことが楽に出来るかもですね。
0そうだね
プレイ済み
返信[11]
親投稿
れい rei-nntnd
どこがメインループかってのは哲学的で難しいな。 別にメインでなくてもいいし。 定期的にチェックしたいというだけなので 頻繁に呼び出されるであろう場所ならどこでもいい 数回回るのカウントは変数をインクリメントして数え上げてもいいし 前回呼ばれた時のmaincnt覚えておいて、現在のmaincntと比較してもいい。 GUI的にはmaincntを見るほうが正しい。
0そうだね
プレイ済み
返信[12]
親投稿
ぽんんん koumei-id
みむさん>うーん、いまいちmodもmaincntも仕組みを理解できてないのでれいさんの方で一度やってみようと思います・・・ れいさん>そうでしたか!ではGOSUBの中でもいい感じですよね?一番呼び出す回数が多いので… インクリメントは1増やすの意味でしたか。将来的には正しい方のmaincntを使いたいですがいまは変数にプラス1でやってみようと思います
0そうだね
プレイ済み