最近、ずっとやりたかったことをやりたいと思っていましたが、そのスキルも時間もありませんでした。コンピューター ゲームです。より正確に言えば、私のお気に入りのゲームの 1 つのオマージュ/クローンです。簡単なことから始めるために、Castlevania シリーズに基づいた古典的な 2D プラットフォームを作成することにしました。
Ruby プログラマーとして、Gosuを使用することにしました。次に、車輪を再発明したくないので、Chipmunkを使用することにしました。
数日後、不可解な衝突検出の問題が発生しました。一体何が起こっているのかを確認するためだけに、境界ボックス描画機能を追加しました。
ご覧のとおり、Belmont は遠く離れていない壁のブロックに衝突しています。gosu gem に含まれているデモ ゲームは正常に動作するので、何か問題があるに違いありません。おそらく、ポリゴンShape
がどのように定義され、スペースに追加されるかについて、あまり理解していません。私が描く場所ではないことは確かです。
Brush < Entity
ゲームの公開レポがあるので、壁 ( ) とプレイヤー ( ) がどのようPlayer < Entity
に定義されているか、そしてそれらが実際に単純な長方形のポリゴン形状を持っていることを確認できます。壁はスペースに追加されず (それらはローグです)、プレイヤーだけが追加されます。body
ゲームのデバッグを試みて、位置がどこにあるかを確認しましたが、すべて問題ないように見えました。
https://github.com/ellmo/castellvania
プレイヤーはゆっくりと倒れますが、上/左/右の矢印でコントロールできます。チルダ ボタン ( ~
) は境界ボックスを示し、衝突ボックスは常に表示されるはずです。
何が間違っているのかを理解しようとする助けが必要です。