私は AS3 を初めて使用するので、衝突検出について何か助けていただければ幸いです。私は現在、ロボット ユニコーンの攻撃 (連続、「無限」、レベル) に似たコンセプトのゲームを作成しています。横スクロールのランニングプラットフォーマー。連続/ループ実行スタイルのプラットフォーマーのチュートリアルが 0 件見つかったので、ここに来ました! 静止しているプレーヤーがいます。プラットフォームは、スクロール/実行効果のために画面の左側に移動するようにスクリプト化されています。ステージ上にプラットフォームのインスタンスが 3 つありますが、プレイヤーはそのうちの1 つとの衝突にしか反応しません。すべてのプラットフォームから衝突が検出されています。
以下のコードは、私のゲーム ループ関数内で実行される衝突用です。助けていただければ幸いです。:D ありがとう。
for (var i = 0; i < numChildren; i++)
{
if (getChildAt(i) is Platform)
{
var platformHolder = getChildAt(i) as Platform
if (platformHolder.hitTestPoint(player.x + leftBumpPoint.x, player.y + leftBumpPoint.y, true))
{
trace("left hit")
leftBumping = true;
}
else
{
leftBumping = false
}
if(platformHolder.hitTestPoint(player.x + rightBumpPoint.x, player.y + rightBumpPoint.y, true))
{
trace("right hit");
rightBumping = true;
}
else
{
rightBumping = false;
}
if(platformHolder.hitTestPoint(player.x + upBumpPoint.x, player.y + upBumpPoint.y, true))
{
trace("Up hit");
upBumping = true;
}
else
{
upBumping = false;
}
if(platformHolder.hitTestPoint(player.x + downBumpPoint.x, player.y + downBumpPoint.y, true))
{
trace("down hit");
downBumping = true;
}
else
{
downBumping = false;
}
}
}
if(leftBumping)
{
if(xSpeed < 0)
{
xSpeed *= -0.5;
}
}
if(rightBumping)
{
if(xSpeed > 0)
{
xSpeed *= -0.5;
}
}
if(upBumping)
{
if(ySpeed < 0)
{
ySpeed *= -0.5;
}
}
if(downBumping)
{
if(ySpeed > 0)
{
ySpeed *= -0.5;
}
}
else
{
//if not touching the floor
ySpeed += gravityConstant;
}