クリーチャーがステージを前後に上下に走っているコードを作成しようとしています。プレイヤーである私は、クリーチャーに近づき、拾う必要があります。舞台にも境界がある――
- マップの制約 - 大きな長方形のボックスは簡単に実現できます。私はこれをやった。
- マップ内の境界も長方形ですが、プレーヤーを長方形の内側に跳ね返す代わりに、反対のことをしようとしています-プレーヤーを長方形から遠ざけます.
私のコードは今のところ次のようになります。
//Conditions that check if player/monsters are hittesting the boxes (rocks
//and stuff), then if correct, bounce them away. Following code excludes
//the monsters for simplicity.
if((mcPlayer.x - aBounceBox[b].x) < 0 && mcPlayer.y <= (aBounceBox[b].y + aBounceBox[b].height/2) && mcPlayer.y >= (aBounceBox[b].y - aBounceBox[b].height/2))
{
mcPlayer.x = aBounceBox[b].x - aBounceBox[b].width/2 - mcPlayer.width/2;
}
//Duplicate above code for right side of box here
if((mcPlayer.y - (aBounceBox[b].y + aBounceBox[b].height/2)) < 0 && (mcPlayer.x + mcPlayer.width/2) > (aBounceBox[b].x - aBounceBox[b].width/2) && (mcPlayer.x - mcPlayer.width/2) < (aBounceBox[b].x + aBounceBox[b].width/2))
{
mcPlayer.y = aBounceBox[b].y + aBounceBox[b].height/2;
}
//Duplicate above code for Upper boundary of box here
ボックスの左側と右側をバウンスするコードが、ヒット テストしているボックスの上部と下部と競合するため、上記はうまく機能しません。それをスムーズに行う方法はありますか?
また、私が抱えているもう 1 つの問題は、ゲーム内のモンスターのパスです。私は彼らに次のことをさせようとしています:
- 「有機的に」動き回るか、少しランダムに動きます。少し動き、停止します。境界に遭遇すると、停止して別の場所に移動します。岩や木への移動が止まる限り、どこへ行っても構いません。
- ステージ上での動きはなるべく重ならないように。
- 重なっている場合は互いに押し離しますが、ごくわずかに重なるようにしたいと思います。
私はそのコードをゆっくりと構築していますが、それを行う方法について誰かアイデアを持っているかどうか尋ねてみようと思いました.