2012-05-10 3 views
2

私は基本的なゲームを書いています。Allegroでカーソルを作成しますか?

私は実際の衝突の輪郭の輪郭を持つカーソル画像が必要です。これはマウスのためではありません - 私はゲーム内で小さなカーソルを飛ばしたいと思います。境界ボックスを長方形にしたくありません。

しかし、私はAllegroとグラフィカルプログラミングには初めてです。私の最初のアイデアは、al_draw_polygonを使って標準的なカーソルのようなものを作成することでしたが、次にどの頂点にそれを供給するかを決める方法は全く分かりませんでした。これを行うより良い方法はありますか?また、ポリゴンを描画するときの頂点の座標を相対的に求める標準的な方法は何ですか?確かにあなたは紙の上にグラフを描くのではなく、毎回それを計算しますか?

私が考えた他の方法は、マウスの画像をロードすることでしたが、それは長方形になります。どのようにこれを正しく行うのですか?

注:C++。与えられた、しかしちょうどその時の図。

答えて

1

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

ちょうど始めるならば、カーソル用に32ビットRGBA PNGファイルを読み込むことをお勧めします。アルファチャンネルを使用すると、非長方形の画像を描画できます。また、イメージを回転および/または拡大縮小することもできます。

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

+0

あなたはいくつかの点を強調しています。 – Aerovistae

1

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

が衝突Detection-の2つの方法があります あなたがチェックヒットボックスの方法は、ありますtransparanciesと をチェックし、ピクセル完璧な方法がある場合のx/yがボックスを越えて移動しようとし、それを移動した場合あなたが何をするつもりであれ、健康を控除したり戻したりすることができます。

これらの方法はどちらもAllegro 5 wikiでカバーされています。私はいくつかの助けになったことを願っている。 異なる方向に飛んでいるカーソルの束を作成するには、srand();などのようなものを使用してランダムな方向intを作成し、ベロシティを追加すると結果はベクトルになります。次に、各カーソルは衝突を避けるためにたとえば、ゲームウィンドウの両サイドを終了すると、windowheightとwindowwidthの整数を作成し、オブジェクトのxまたはyが範囲外であるかどうかを確認します。そうすると、カーソルが戻ったり、方向が変わったりします。それ。次に、現在のx/yが他のx/yと重複していないかどうかを比較する "プレイヤー"を除いて同じことを行う必要があります。

+0

私はこれを約3年前に尋ねたことを知っています.... – Aerovistae

+0

他に役立つでしょうか? –

+0

そうだと思います。途中でスタック交換へようこそ。楽しんでください....私はあなたにupvoteを与えたので、あなたはどこにでもコメントできるということに非常に近いです。 50リピートになります.... – Aerovistae

関連する問題