hitTestPoint или hitTestObject?
Мне нужно, чтобы мой персонаж приземлился на выступ и остался там, но он только продолжает проходить сквозь него. Буду ли я создавать массив для всех моих различных выступов и проверять каждый раз, когда мой персонаж ударит по ним? Любая помощь будет оценена.
Благодарю.
1 ответ
Обнаружение столкновений для полов и прочее на самом деле сильно отличается от hitTesting в идее, которая должна постоянно видеть, что объекты касаются. Попробуйте что-то вроде этого!
//loop through all the platform objects to generate the level
var level:Array = new Array();
for (var i=0; i<numChildren; i++)
{
if (getChildAt(i) is platform)
{
level.push(getChildAt(i).getRect(this));
}
}
for (i=0; i<level.length; i++)
{
if (player.getRect(this).intersects(level[i]))
{
if (speedX > 0) ////moving right collision and stuffs
{
player.x = level[i].left-player.width/2;
}
if (speedX < 0) ////moving left collision and stuffs
{
player.x = level[i].right+player.width/2;
}
speedX = 0 //kills the speed
}
}
speedX - это скорость, с которой символы перемещаются по горизонтали, а "платформа" - это имя переменной, которую вы используете в качестве обрыва. Кроме того, "игрок" может быть заменен тем, что вы называете своим объектом, который идет на выступ. В любом случае, так я и делал на одном из моих компьютерных классов:) Надеюсь, это поможет!