Показать сообщение отдельно
Старый 26.06.2022, 17:51
Alexey25 вне форума Посмотреть профиль Отправить личное сообщение для Alexey25 Найти все сообщения от Alexey25
  № 1  
Ответить с цитированием
Alexey25

Регистрация: Mar 2016
Сообщений: 34
По умолчанию Не работает hitTestPoint

Решил сделать платформер на flash, столкнулся с проблемой что hitTestPoint не работает. В чем может быть проблема?

Герой у меня создается с помощью графики “graphics”.

P.S. Честно говоря не помню какая там проблема была, уже сталкивался с ней очень давно, сейчас позабыл.

Вот пример hitTestPoint:
Код AS3:
	if (platform1.hitTestPoint(shape.x, shape.y) && !jumpsetup) 
        {
 
			shape.x = platform1.x;
			onground = true;
            jumping = false;
            var i = 0;
            var objy = Math.floor(y1);
 
 
 
		}
А вот полностью код:
Код AS3:
var shape:Sprite = new Sprite();
var x1 = 0;
var y1 = 0;
var dx = 0;
var dy = 0;
var jumpsetup = false;
var onground = false;
var jumping = false;
var shooting = false;
var left_key_down: Boolean = false;
var right_key_down: Boolean = false;
var jump_key_down: Boolean = false; 
function createHero()
{
 
 
shape.graphics.lineStyle(1, 0x000000, 1);
shape.graphics.beginFill(0x00FFFF, .5);
shape.graphics.drawCircle(0, 0, 20);
shape.x = 150;
shape.y = 150;
 
addChild(shape);
}
 
 
 
function init()
{
	createHero();
	stage.addEventListener(Event.ENTER_FRAME, onEnterFrame1);
	stage.addEventListener( KeyboardEvent.KEY_DOWN, on_keydown);
	stage.addEventListener( KeyboardEvent.KEY_UP, on_keyup);
}
function on_keydown( e : KeyboardEvent ) : void {
  //LEFT Key
  if (e.keyCode == 37) {
    left_key_down = true;
  }
  //RIGHT Key
  else if (e.keyCode == 39) {
    right_key_down = true;
  }
  //Up Key
  else if (e.keyCode == 38) {
    jump_key_down = true;
  }
}
function on_keyup( e : KeyboardEvent ) : void {
  //LEFT Key
  if (e.keyCode == 37) {
    left_key_down = false;
  }
  //RIGHT Key
  else if (e.keyCode == 39) {
    right_key_down = false;
  }
  //Up Key
  else if (e.keyCode == 38) {
    jump_key_down = false;
  }
}
 
function onEnterFrame1(evn:Event)
{
 
	dy = dy + 0.5;
	var y1 = Math.ceil(shape.y + dy);
 
	onground = false;
	if (dy >= 0) 
    {
		trace(shape.y);
		if (platform1.hitTestPoint(shape.x, shape.y) && !jumpsetup) 
        {
 
			shape.x = platform1.x;
			onground = true;
            jumping = false;
            var i = 0;
            var objy = Math.floor(y1);
 
 
 
		}
		else
		{
			if (dy > 5 && !shooting) 
            {
 
            }
		}
	}
	else
	{
 
 
	}
	if (dy > 9) 
    {
        dy = 9;
    }
	if (!jumpsetup) 
    {
        shape.x = shape.x + dx;
        shape.y = shape.y + dy;
    }
	if (right_key_down) {
	   if (jumping) 
        {
            dx = dx + 0.4;
        }
        else 
        {
            dx = dx + 1;
        }
	}
	else
	{
		if (left_key_down && !shooting) 
        {
            if (jumping) 
            {
                dx = dx - 0.4;
            }
            else 
            {
                dx = dx - 1;
            }
 
        }
        else 
        {
            dx = dx * 0.7;
        }
	}
	if (dx > 7) 
    {
        dx = 7;
    }
    if (dx < -7) 
    {
        dx = -7;
    }
	if (!jumpsetup && !jumping && !shooting && onground) 
    {
        if (Math.abs(dx) < 0.5) 
        {
            dx = 0;
		}
        else 
        {
           dy = -9;
		   jumpsetup = false;
        }
    }
	if (jump_key_down && dy >= 0 && dy < 1 && !jumping) 
    {
		trace("dawad2");
        onground = false;
        shooting = false;
        jumping = true;
        jumpsetup = true;
 
    }
	shape.x = Math.floor(shape.x);
    shape.y = Math.floor(shape.y);
}
init();