トップページ > 記事閲覧
敵ショットの当たり判定について
名前:north 日時: 2014/12/07 01:03

いつもご質問に答えてくださりありがとうございます。 今回は敵ショットの当たり判定についての質問なのですが、 敵ショットが自機に当たった時の判定のプログラムを書いたのですが、 自機に弾が当たっても自機が消えてくれません。 判定プログラムのところにデバッガを置いてみたところここにブレークが来なかったので、これが原因だとはわかったのですが、 なぜここにブレークが来ないで終わってしまうのかというところで躓いてしまっています。 どのように修正したら当たり判定の処理が実行されるのでしょうか? 下記にプログラムをアップいたしました。 ttp://xfs.jp/s3cSU お忙しい中、いつも申し訳ありませんがご教授願えたらと思います。
メンテ

Page: 1 |

Re: 敵ショットの当たり判定について ( No.1 )
名前:管理人 日時:2014/12/07 15:31

プログラムを拝見しました CCheckHit というクラスで当たり判定を行っていますが、CCheckHit クラスの 基底クラス の CBullet のメンバー変数 tShot に値を代入するプログラムが見当たりません 恐らくですが、CCheckHit の基底クラスを CBullet にすると、Main.cpp で new している CBullet に代入した情報が CCheckHit クラスからも参照できるとお考えなのではないでしょうか? 実際はそうではなく、new CCheckHit で作成される CCheckHit クラスに含まれる CBullet の情報と、new CBullet で作成される CBullet の情報は独立しています ( 記録されているメモリ領域が異なります ) なので、checkhit に弾の情報やプレイヤーの情報を代入していない以上、EnemyShotAndPlayer などで checkhit 内の tShot を参照しても、空っぽの情報しかないというわけです( checkshot 内の tShot と bullet 内の tShot は独立している( 別のメモリ領域に記録されている )ので ) なので、CCheckHit クラスの基底クラスを CBullet にするのではなく、CBullet クラスの情報を CCheckHit クラスに渡して使うようにするのが良いと思います というか、既に CBullet クラス内で敵やプレイヤーの情報を参照するために CBullet クラスに SetPlayarParam や SetEnemyParam を用意して使用していますね これらの関数と、その処理の意味するところは理解されていますか? とりあえず CCheckHit クラスの基底クラスを無くし、CBullet クラスと同じように SetPlayerParam や SetShotParam で弾やプレイヤーの情報を登録して EnemyShotAndPlayer などで 使用するように構造を変えてみたプログラムをこちらにアップしましたので、よろしければご覧ください https://dxlib.xsrv.jp/temp/STG_Change_Source.ZIP ( 変更したソースファイルのみが入っています )
メンテ
Re: 敵ショットの当たり判定について ( No.2 )
名前:north 日時:2014/12/08 19:46

お忙し中ありがとうございます。 仰る通りでCBullet に代入した情報が CCheckHit クラスからも参照できると思っておりました。 私の継承、newに関する勉強不足です。 CBulltでSetPlayarParam や SetEnemyParamを用意したのは別クラスで使用している構造体の中身を取得するために私自身で用意した関数ですのでこちらに関しては理解しております。
メンテ

Page: 1 |

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

   クッキー保存