HaxeFlixel Игнорирование прозрачных пикселей на спрайте
Мне нужно, чтобы спрайт увеличивался, когда я наводил курсор мыши на спрайт. Но проблема в том, что спрайт имеет необычную форму, которая оставляет много прозрачного пространства. И мышь реагирует на это прозрачное пространство. Как мне сделать так, чтобы игра не реагировала на прозрачные пиксели, а только на сам спрайт?
Вот мой код:
override public function create()
{
image = new FlxSprite(100, 100).loadGraphic("assets/images/freeplay.png");
add(image);
}
override public function update(elapsed:Float)
{
image.scale.set(1, 1);
if (FlxG.mouse.overlaps(image))
{
image.scale.set(1.1, 1.1);
}
super.update(elapsed);
}
Ответы (1 шт):
Автор решения: firet
→ Ссылка
Можно добавить проверку альфа-канала в точке где находится мышь
override public function update(elapsed:Float)
{
image.scale.set(1, 1);
if (FlxG.mouse.overlaps(image))
{
var val = image.getPixelAt(FlxPoint.get(FlxG.mouse.screenX, FlxG.mouse.screenY));
if (val.alpha > 0)
{
image.scale.set(1.1, 1.1);
}
}
super.update(elapsed);
}