Blind.Geek81 Ответов: 0

Как подкрасить определенные кадры спрайтов в фазере?


Я создаю игру 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);
но я хочу быть уверенным. В документации или примерах нет ничего о таргетинге на определенные фреймы.

0 Ответов