トップページ > 記事閲覧
一定時間の間処理を続けたい
名前:ゆきさき 日時: 2020/11/06 12:10

はじめまして。 最近DxLibを用いてゲーム制作をし始めた者です。 早速本題に入らせていただきますが、一定時間処理を続けるということができずに困っています 以下のコードになります(一部を抜粋しているので宣言されていない変数が多いですが...) 5秒間だけDrawrotaGraphを実行し続けたいのですが、視認できないほどのフレームしか描画されない上に、ShrimpSE[4]が連続で再生される(ほぼ毎フレームっぽい)状態です。 ブレークポイントなどを使ってデバッグしてみたのですが、どうやらIsShrimpがTRUEになった瞬間にFALSEにする処理が走っているということしか分からず、なぜ if (ShrimpNowTime < ShrimpEndTime) IsShrimp = FALSE; このif文が通るのか分からない状態です DxLib云々以前の質問ではありますが、どうしてもGetNowCount()を用いた処理が分からないので教えていただけると幸いです ShrimpEndTime=5000; 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) if (CheckHitKey(KEY_INPUT_F) == 1 && !IsShrimp)  {  PlaySoundMem(ShrimpSE[4], DX_PLAYTYPE_BACK);  IsShrimp = TRUE;  ShrimpStartTime = GetNowCount);  } ShrimpNowTime=GetNowCount()-ShrimpStartTime; if (ShrimpNowTime < ShrimpEndTime) IsShrimp = FALSE; 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 if(IsShrimp) DrawRotaGraph(ShrimpX + PlayerX, ShrimpY + PlayerY, 0.1,ShrimpAngle,Shrimp, TRUE);
メンテ

Page: 1 |

Re: 一定時間の間処理を続けたい ( No.1 )
名前:でぃあぶろ 日時:2020/11/06 14:12

if (ShrimpNowTime < ShrimpEndTime) IsShrimp = FALSE; が if (ShrimpNowTime > ShrimpEndTime) IsShrimp = FALSE; ではないでしょうか.(>=でも良さそうですけど) ShrimpNowTimeがShrimpEndTime(5000ms)より大きくなったらIsShrimpをFALSEにしたいんですよね? 現状だとその逆になっていて,IsShrimpがTRUEになったループで条件を満たし,IsShrimpがFALSEになってしまいます. >どうやらIsShrimpがTRUEになった瞬間にFALSEにする処理が走っている とのことですが,Debugビルドでデバッグしてますでしょうか? Releaseビルドだとローカル変数などの値が見れなかったり, 1行ずつ実行できなかったりとデバッグするのは何かと不便ですので…
メンテ
Re: 一定時間の間処理を続けたい ( No.2 )
名前:ゆきさき 日時:2020/11/06 14:26

返信いただきありがとうございます! ほんとに初歩的なミスでお恥ずかしい限りです...
メンテ
Re: 一定時間の間処理を続けたい ( No.3 )
名前:ゆきさき 日時:2020/11/06 14:28

無事解決しました! ほんとこんな簡単なことに丁寧な返信をしていただいてありがとうございます! ビルドはDebugビルドでデバッグしていました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存