Как подкрасить определенные кадры спрайтов в фазере?
Я создаю игру Bejeweled, используя потрясающий прототип Emanuele Feronato; Match 3 Bejeweled HTML5 prototype, сделанный с помощью комбо – детекторов Фазера. Я создал свою собственную графику в оттенках серого в Photoshop, сделал их немного больше, увеличил размер сетки игры и использовал некоторый код из своего движка HTML5 Dungeon Raid tile engine, сделанного с помощью Phaser – Part 4 tutorial, чтобы сделать игру масштабируемой.
Я использовал свойство оттенка спрайта Фазера, чтобы раскрасить свои драгоценности. Они выглядят потрясающе, все случайно окрашенные, но трудно сделать совпадения только по форме. Как бы вы подкрасили определенные рамки в определенный цвет? Я сделаю большой скачок вперед в своей игре, когда она сможет сделать следующее:
- Выберите семь из 13 цветовых вариантов
- Выберите семь из 49 спрайтов в таблице спрайтов Jewels. Я использовал тот же стиль слоя в этом оригинале. Это выглядит неплохо, но я думаю, что различные стили драгоценностей, а также тонировка всех форм в один цвет сделают спички более заметными. Все спрайты должны быть из разных столбцов. Например, если первым выбранным спрайтом была звезда в левом верхнем углу изображения, то следующим кадром должен быть шестиугольник или другая фигура из другого ряда.
- После того, как различные кадры были выбраны, игра должна применить выбранные цвета к выбранным кадрам моей таблицы спрайтов. Код для раскрашивания драгоценных камней находится в методе DrawField (), показанном ниже:
function drawField() { jewelGroup = game.add.group(); for (var i = 0; i < fieldSize; i++) { gameArray[i] = []; for (var j = 0; j < fieldSize; j++) { var jewel = game.add.sprite(jewelSize * j + jewelSize / 2, jewelSize * i + jewelSize / 2, "jewels"); jewel.anchor.set(0.5); jewel.tint = colors[Math.floor(Math.random() * colors.length)]; jewelGroup.add(jewel); do { var randomColor = game.rnd.between(0, jewelColors - 1); jewel.frame = randomColor; gameArray[i][j] = { jewelColor: randomColor, jewelSprite: jewel } } while (isMatch(i, j)); } } selectedJewel = null; }
Что я уже пробовал:
Я еще не пробовал раскрашивать конкретные рамки конкретными цветами. Я просматривал документацию по Фазеру и не смог найти метод поиска конкретного кадра. Я думаю, что это будет выглядеть примерно так
jewel.frame(x);но я хочу быть уверенным. В документации или примерах нет ничего о таргетинге на определенные фреймы.