2

私は基本的なゲームを書いています。

衝突検出のための実際の適切なアウトラインを持つカーソル画像が必要です。これはマウス用ではありません。ゲーム内で小さなカーソルを飛び回らせたいのですが、境界ボックスを四角形にしたくありません。

しかし、私は Allegro とグラフィカル プログラミングは初めてです。私の最初のアイデアは、al_draw_polygon を使用して標準のカーソルに似たものを作成することでしたが、どの頂点をフィードするかを理解する方法がまったくわからないことに気付きました。これを行うより良い方法はありますか?また、多角形を描画するときに頂点の座標を相互に相対的に計算するための標準的な方法は何ですか? 紙にグラフを書いて毎回計算するわけではありませんか?

私が考えたもう 1 つの方法は、マウスの画像を読み込むことでしたが、それでは長方形になってしまいます。これを正しく行うにはどうすればよいですか?

注: C++。それは当然のことですが、念のため。

4

2 に答える 2

1

カーソルの描画方法と衝突検出の方法の両方を求めています。関連していますが、これらは 2 つの別個のトピックです。

始めたばかりの場合は、カーソル用に 32 ビット RGBA PNG ファイルをロードすることをお勧めします。アルファ チャネルを使用すると、長方形以外の画像を描画できます。画像を回転および/またはスケーリングすることもできます。

次に、衝突検出について心配する必要があります。アレグロとは全く関係ありません。任意の 2D 物理ライブラリを使用するか、線が三角形などと衝突するかどうかを確認する方法に関する数式を調べるだけでかまいません。オブジェクトの重要な領域の周りにボックスを近似することから始めるのが最も簡単です。後でいつでもより高度な衝突検出を構築できます。

于 2012-05-11T00:04:07.920 に答える
1

あなたが何を意味するのか理解するのは難しいですが、そうかもしれません。マウスをプログラムに追加し、ループに追加して (通常はタイマーで、入力がなくても更新されます)、カーソルから取得した座標を使用してカーソルを描画します。

衝突検出には 2 つの方法があります。透明度をチェックするピクセル パーフェクトな方法と、x / y がボックスを超えて移動しようとしているかどうかをチェックし、そうであれば元に戻すか、健康を差し引くヒット ボックス方式があります。何をするつもりでも。

これらの方法は両方とも、Allegro 5 wiki でカバーされています。少しでもお役に立てば幸いです。さまざまな方向に飛んでいるカーソルの束を作成するには、srand(); などを使用してランダムな方向の int を作成し、速度を追加します。結果はベクトルになります。次に、各カーソルが衝突関数を呼び出して、終了しないようにする必要があります。たとえば、ゲーム ウィンドウの側面など、windowheight と windowwidth の整数を作成し、オブジェクトの x または y が範囲外にあるかどうかを確認します。 . 次に、「プレーヤー」を除いて同じことを行う必要があります。現在の x/y が他の x/y と重なっていないかどうかを比較し、重なっている場合は何かを行います。

于 2015-02-16T08:23:32.607 に答える