Actionscript3 Простая путаница при столкновении платформ

Я делаю 2D платформерную игру и пытаюсь добавить столкновения к платформам, чтобы при попадании персонажа он не проходил. Я изо всех сил пытаюсь найти синтаксис, чтобы использовать, чтобы создать это столкновение. Пока это то, что у меня есть.

Также я все еще хотел бы иметь возможность использовать hitTestObject в операторе if.

Спасибо

public function platform1Collision():void
    {
        if (fireboy1.hitTestObject(Platform1))
        {
            //fireboy1 cannot pass through

        }
    }

1 ответ

Решение

Вы, вероятно, захотите предотвратить fireboy1"s y собственность от расширения прошлого Platform1"s y имущество:

function platform1Collision():void
{
    if(fireboy1.hitTestObject(Platform1))
    {
        if(fireboy1.y > Platform1.y)
        {
            fireboy1.y = Platform1.y + Platform1.height;
        }
        else
        {
            fireboy1.y = Platform1.y - fireboy1.height;
        }
    }
}

ПРИМЕЧАНИЕ. Приведенный выше пример кода предполагает ориентацию сверху слева для обоих fireboy1 а также Platform1,

Отредактированный: вышеупомянутый отредактированный код позволит fireboy1 идти под Platform1, но не пройти через это.

Это очень простой пример, чтобы дать вам представление о типе логики, которую вы можете использовать. Если вы хотите разрешить fireboy1 пройти через Platform1 снизу вам придется обновить логику, чтобы учесть это. Например, если вы вытащите if/else и просто автоматически размещать fireboy1 выше Platform1 каждый раз, когда они сталкиваются, это будет выглядеть так, как будто player1 прыгает на Platform1 когда к нему приближаются снизу.

Другие вопросы по тегам