sharomet
@sharomet
Front-End

Actionscript 3.0 как правильно использовать hitTestPoint?

Всем привет.
Суть игры в двух словах шарик катится, прыгает, падает и. т. п.
Хотел сделать простую игру и столкнулся с вот такой проблемой:
Когда шар падает на ровную поверхность то он останавливается вовремя, но стоит ему попасть на какой нибудь уголок то он иногда проскакивает, всё видно на скриншоте.

private function run(e:Event):void{ //Функция запускается через ENTER_FRAME
			if(left){xspeed = 5;} //если переменная left=true (шар катится влево)
			else if(right){xspeed = -5;} //если переменная right=true (шар катится вправо)
			else {xspeed = 0;} //в другом случае скорость =0 и шар стоит на месте
			yspeed++; //Что то типа гравитации шар постоянно падает
			ball_mc.x -= xspeed;
			ball_mc.y += yspeed;
			
//Вот проблемный участок кода
			while (boks_mc.hitTestPoint(ball_mc.x,ball_mc.y+ball_mc.width/2,true)){
				ball_mc.y--;
				yspeed = 0;
				jamp = false;
			}
			while (boks_mc.hitTestPoint(ball_mc.x+ball_mc.width/2,ball_mc.y,true)){
				ball_mc.x--;
				xspeed = 0;
			}
			while (boks_mc.hitTestPoint(ball_mc.x-ball_mc.width/2,ball_mc.y,true)){
				ball_mc.x++;
				xspeed = 0;
			}

		}


Нормально работает
11fc851aebf240c48920e2cf0d6e9a3c.png

Вот этот глюк
69e5abf3448a441091d54024cf0d43c8.png
  • Вопрос задан
  • 2562 просмотра
Решения вопроса 1
ERrorMAKros
@ERrorMAKros
Front-End/Back-End Developer
Это не глюк, вы не правильно поняли суть этого метода.

hitTestPoint() - Вычисляет экранный объект, чтобы определить, перекрывает ли он точку, заданную координатами x и y, или пересекает ее. Параметры x и y задают точку в координатной плоскости рабочей области, а не контейнера экранных объектов, содержащего объект (если контейнером не является сама рабочая область).

Вам больше должен подойти hitTestObject ()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы