2dアクションゲームで攻撃のエフェクトを出す際のやり方についてお聞きしたいです
http://piposozai.wiki.fc2.com/wiki/%E3% ... %94%A83%29
こちらのサイトのgifを一枚の画像に加工して、LoadDivGraphで読み込んだあとfor文で出力しているのですが
描画する速度が速くて一瞬で終わってしまうのですが、↑のサイトと同じくらいの速度で描画するにはどうすればいいでしょうか
というより描画の速度を遅くするにはどういった手法があるのでしょうか?
2dアクションゲームの攻撃エフェクトの表示について
Re: 2dアクションゲームの攻撃エフェクトの表示について
開発環境やライブラリの記載がないので断定はできませんが、
LoadDivGraph関数を使って、という発言からDxLibを用いていることと仮定します。
言語は不明なので、とりあえずCで話を進めます。
えっと…まず、for文を使って出力させているのですか?
もしよろしければソースコードの方を拝見させていただいてもよろしいでしょうか?
同フレーム内に、 などと記載してしまっていれば、恐らくそれは間違いでしょう。
1フレームで全てのアニメーション画像を表示してしまっていることになります。
LoadDivGraph関数を使って、という発言からDxLibを用いていることと仮定します。
言語は不明なので、とりあえずCで話を進めます。
えっと…まず、for文を使って出力させているのですか?
もしよろしければソースコードの方を拝見させていただいてもよろしいでしょうか?
同フレーム内に、 などと記載してしまっていれば、恐らくそれは間違いでしょう。
1フレームで全てのアニメーション画像を表示してしまっていることになります。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: 2dアクションゲームの攻撃エフェクトの表示について
すみません。書き忘れていましたがDXlibをつかってC言語で開発しています
amehirune さんが書いたコードとほぼ変わりませんがコードはこんな感じです
配列ah_1には6つに分割した画像が入っています
そもそもforでふつうは出力しないのだろうと思ってはいますが他にやり方が思いつきませんでした。
for (int i = 0; i < ah_1_size; i++) {
frame = i % 6;
DrawGraph(*view_charx + CHAR_SIZE_X *0.5F, *PlY - CHAR_SIZE_Y *0.5F, ah_1[frame], true);
}
配列ah_1には6つに分割した画像が入っています
そもそもforでふつうは出力しないのだろうと思ってはいますが他にやり方が思いつきませんでした。
Re: 2dアクションゲームの攻撃エフェクトの表示について
もう少し詳しく書くと
こんなかんじですね
int PlayerAttack( float *view_charx, float *PlY, int *xcount, const int ah_1_size, const int ah_2_size )
{
if ( *xcount > 0 && GetInputChar(TRUE) == 'v')
{
for (int i = 0; i < ah_1_size; i++) {
frame = i % 6;
DrawGraph( R_AtXDraw, AtYDraw, ah_1[frame], true);
}
}
if (*xcount <= 0 && GetInputChar(TRUE) == 'v')
{
for (int i = 0; i < ah_2_size; i++) {
frame = i % 6;
DrawGraph( L_AtXDraw, AtYDraw, ah_2[frame], true);
}
}
return 0;
}
Re: 2dアクションゲームの攻撃エフェクトの表示について
これはいけませんね…!!
先ほども申しましたが、for文で表示させようとしても1フレーム、恐らく1/60秒ほどしか表示されません…
と、いうわけで。すっごーく雑なサンプルプログラムですが、こちらをご参照ください。
struct{
bool flag;
int eff_no;
int flame;
int x,y;
}eff;
void action{
/* なんやかんやあって */
eff.flag = true;
eff.eff_no = 0;
flame = 0;
}
void eff_main(){
if(eff.flag){
switch(eff.eff_no){
case 0:
DrawGraph( eff.x, eff.y, img_eff[eff.flame%EFF_FLAME], TRUE);
break;
default:
printfDx("Error.");
break;
}
eff.flame++;
}
}
int main(){
action();
eff_main();
}
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: 2dアクションゲームの攻撃エフェクトの表示について
返信ありがとうございます。
お聞きしたいのですが、
マクロ関数?のEFF_FLAMEは私の場合は画像を6つに分割しているので6が入るということでよろしいのでしょうか?
お聞きしたいのですが、
マクロ関数?のEFF_FLAMEは私の場合は画像を6つに分割しているので6が入るということでよろしいのでしょうか?
Re: 2dアクションゲームの攻撃エフェクトの表示について
サンプルプログラムを参考にやってみたところうまくいきました
サンプルプログラムにキー入力のチェックの処理とフラグをfalseにする処理を加えました
amehirune さん
ありがとうございました
サンプルプログラムにキー入力のチェックの処理とフラグをfalseにする処理を加えました
amehirune さん
ありがとうございました