Я создаю 2D-платформерную игру. У меня проблемы с моими столкновениями. Когда мой персонаж попадает, он стоит на вершине платформы, он останется там на 2,5 секунды, затем провалится через все другие платформы на первый этаж. Я думаю, что он должен что-то сделать с моей функцией гравитации, а функция столкновения не работает вместе должным образом. Я действительно не могу понять, что любая помощь будет оценена.AS3-символ падает через платформы, столкновение не работает должным образом
это = fireboy1
Вот гравитация код из моего класса персонажа:
public var gravity:int = 0;
public var floor:int = 461;
public function adjust():void
{
//applying gravity
this.y += gravity;
if(this.y + this.height <floor)
gravity++;
else
{
gravity = 0;
this.y = floor - this.height;
}
и вот код для моих столкновений с основного класса:
//collision detection of platform1
public 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;
}
}
пытается сделать: если ((this.y + this.height) <этаж) гравитации ++; ... – tziuka
, который ничего не менял :( –
просто касательный, но гораздо проще использовать физическую структуру для этого. Как box2d и т. Д. Выполняет ли 'adjust()' и 'platform1Collision()' запуск каждого кадра В идеале они должны быть в одной и той же функции, и вы должны НЕ запускать гравитацию ('this.y + = gravity'), если возникает столкновение. Обновите свой вопрос, чтобы включить область вашего кода (например, что это такое в первый блок и как он относится ко второму блоку кода) – BadFeelingAboutThis