トップページ > 記事閲覧
敵のHPが0以下になったら徐々に敵の画像を薄くしたい。
名前:マーク42 日時: 2020/04/10 21:09

環境 Windows10 visual studio 2019 問題点が3つあります。 一つは、背景にgifを使ったのですが、このgifを使うと銃での攻撃が一瞬遅くなります。 二つ目は銃の攻撃はコントローラのXボタンで撃てるように書いたのですが、たまに押しても銃攻撃ができず反応しないときがあります。 三つめが一番困難なのですが、test.cppに新しく書き足した。 //クリア後の画面に続く if (mark == 0 && enemyHP < 1) { ++toumeika; enemyImage = enemyGHandle[11]; DrawExtendGraph(pos[enemyY][enemyX][0] - 14, pos[enemyY][enemyX][1] - 66, pos[enemyY][enemyX][0] + 64, pos[enemyY][enemyX][1] + 66, enemyGHandle[11], TRUE); SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255 - toumeika); //ブレンドモードをα(128/255)に設定 } if (toumeika > 255) { Seen = 0;//Seenの値を初期値に戻す。 talk = 3; enemyHP = 0; mark = 1; enemymovelock = 1;//これで敵は攻撃してこなくなる StopSoundMem(sound3);//戦闘BGMを止めるための関数 toumeika = 0; } に関して、 こちらのリファレンス //dixq.net/g/02_03.htmlを基に 敵のHPが0以下になったとき、敵の画像のみが徐々に薄くなり、最後は敵のみが消えて、クリア画面に進むように書こうとしたのですが、 敵のHPが0以下になると画面全体(ステージ、主人公、敵などのすべて)が薄くなっていき、最後は真っ黒くなります。 こちらは全体のプログラムです。 16.gigafile.nu/0417-dfb9ee90c62a7c424e848720c3d3077dc こちらは使っている画像と背景のgif動画です。 twitter.com/OnslaughtA/status/1218541632762499073 twitter.com/OnslaughtA/status/1235768120410886144
メンテ

Page: 1 |

Re: 敵のHPが0以下になったら徐々に敵の画像を薄くしたい。 ( No.1 )
名前:sereparu 日時:2020/04/10 22:05

とりあえず、三つ目に関しては、SetDrawBlendMode が敵画像のみではなく 背景の画像にまで適用されてしまっているのだと思います。 (SetDrawBlendMode は一度設定すると全ての画像に適用されます) なので、背景画像を描画する直前に SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); を実行してブレンドモードをリセットすれば良いと思います。 SetDrawBlendMode のリファレンスのサンプルを参考にしてください。 一つ目、二つ目はプログラムのどの部分か分からないので すみませんが自力で解決してください。 (他人が書いたプログラム全体を細かく読むのは慣れていないので)
メンテ
Re: 敵のHPが0以下になったら徐々に敵の画像を薄くしたい。 ( No.2 )
名前:sereparu 日時:2020/04/11 01:57

すみません。先ほどの書き込みを少し訂正します。 先ほどの「背景画像」というのは、薄くしたい敵の画像以外のすべての画像のことです。 (SetDrawBlendMode のサンプルを見ている内に、言葉が混ざってしまいました) また、三つ目の修正方法も訂正します。 以下のように、薄くしたい敵の画像を描画する直前に「SetDrawBlendMode(DX_BLENDMODE_ALPHA…」を実行して 敵の画像を描画した直後に「SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);」を実行して ブレンドモードをリセットすれば、その他の画像は薄くならないようになると思います。 SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255 - toumeika); //ブレンドモードをα(128/255)に設定 DrawExtendGraph(pos[enemyY][enemyX][0] - 14, pos[enemyY][enemyX][1] - 66, pos[enemyY][enemyX][0] + 64, pos[enemyY][enemyX][1] + 66, enemyGHandle[11], TRUE); SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); //ブレンドモードをリセット(他の画像が薄くならないようにするため)
メンテ
Re: 敵のHPが0以下になったら徐々に敵の画像を薄くしたい。 ( No.3 )
名前:マーク42 日時:2020/04/12 19:27

返信のコメント遅くなりすいません。 sereparuさんから頂いたプログラムを if (mark == 0 && enemyHP < 1) { ++toumeika; enemystayhere = 1; if(toumeika >0){ SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255 - 2*toumeika); //ブレンドモードをα(128/255)に設定 DrawExtendGraph(pos[enemyY][enemyX][0] - 14, pos[enemyY][enemyX][1] - 66, pos[enemyY][enemyX][0] + 64, pos[enemyY][enemyX][1] + 66, enemyImage, TRUE); } SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); //ブレンドモードをリセット(他の画像が薄くならないようにするため) SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255 - toumeika); //ブレンドモードをα(128/255)に設定 } のように条件付きで書き直したところうまくいきました。 その書き方でフリーのgifの動画も透明化することができました! どうもありがとうございます! 以下は全体のプログラムです。 39.gigafile.nu/0419-d2ae6777c01b6e2bb012684ec891c99ad
メンテ

Page: 1 |

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

   クッキー保存