0

私はFlashとActionscriptの初心者なので、質問がばかげている場合は申し訳ありません。プラットフォームゲームを作成する必要があります-IcyTowerのようなものを書くことを計画しています-私のキャラクターは、何かの塔の頂上に到達するために、あるプラットフォームから別のプラットフォームにジャンプしています。そして、ここに私の問題があります-キャラクターが上からのみプラットフォームにジャンプできるようにしたいのですが、彼が下から、または横からプラットフォームと衝突した場合、私は彼に跳ね返ってもらいたいです(私が何を理解してくれることを願っています平均したい)。

したがって、そのようなことを行うには、これら2つのオブジェクトが衝突する場所を正確に検出できる必要があります。頭に浮かぶ唯一の解決策は、すべてのプラットフォームの座標を配列に保持し、それらを常に文字の位置と比較することです。彼はジャンプしますが、それは正しくないようです。この問題を解決するためのより良い方法はありますか?

アドバイスをいただければ幸いです。

PS。私の英語でごめんなさい

4

2 に答える 2

0

flixelflashpunkなどのゲームライブラリを利用できます。どちらも素晴らしいです。

基本的に、キャラクターが衝突する可能性のあるすべてのオブジェクトを反復処理する必要があります。.hitTestObject()を使用して、キャラクターがオブジェクトのいずれかと衝突しているかどうかを大まかに判断できます。その後、ステージ上のキャラクターの座標と寸法を取得し、ヒットしたオブジェクトの座標と寸法と比較して方向を決定できます。

したがって、疑似コードでは

for each (var platform:DisplayObject in platforms) {
    if (character.hitTestObject(platform)) {
        if (collideFromBottom || collideFromSide) { 
            // allow movement 
        }
        if (collideFromTop) { 
            // stop downward velocity 
        }
        break; // might as well, as you have detected the collision
    }
}

CollideFromBottomは、キャラクターの上部とプラットフォームの下部を比較します。スプライトとして、プレーヤーとプラットフォームの両方に[x、y]プロパティと[width、height]があり、座標を決定できることを忘れないでください。

PSこの質問はgamedev.stackexchange.comで尋ねられるべきでした

于 2012-06-28T12:35:41.790 に答える
0

hitTestコリジョンベースのゲームを最初から作成するのではなく、Box2Dのような物理エンジンを使用することをお勧めします(例を参照)。
深刻なコード/設計の問題が発生し、プロジェクトを脇に置いておく可能性は非常に高くなります。

インターネットにはたくさんの良いチュートリアルがあります。ここに良いリソースがあります-Box2dを使用して横スクロールゲームを作成します:

  1. パート1
  2. パート2
于 2012-06-28T15:10:26.813 に答える