2015-01-22 3 views
2

Я строю двухпользовательскую настольную игру. Я хочу отобразить плату с точки зрения текущего игрока. Поэтому, если я игрок в нижней части доски, я хочу инвертировать ось y и переместить начало в нижний левый угол холста. Было бы неплохо также, чтобы мышиные клики также трансформировались. И я только хочу повлиять на положение спрайта, а не на их вращение - я всегда хочу, чтобы они указывали вверх. Я не вижу простого способа сделать это с Phaser. Есть ли это?Инвертировать ось y в Phaser

Я пробовал делать world.scale.setTo(1, -1), а затем world.y = -world.height, но модификация world.y, кажется, ничего не делает.

ответ

1

не прямая функция фазера однако я рекомендую запускать вашу в игре мировой системы координат так же, как фазер, и просто поменять местами координаты дисплея, поэтому вместо того, чтобы устанавливать ваши настольные игровые фишки на скажу

queen.position.set(10, 10); 

было бы

queen.position.set(10, worldHeight - 10); 

Отсюда, построить обертку вокруг размещения ваших спрайтов, так что он знает о зеркальном отображении:

placePiece(sprite, x, y, direction); 

И в этой функции проверьте направление, чтобы увидеть, нужно ли перевернуть координаты.

2

У меня был подобный вопрос и не вижу никаких удовлетворительных ответов, но, глядя через источник, я придумал этот код, который я застрял в моей create функции:

game.world.transformCallback = function(worldTransform) { 
    worldTransform.d = -1; 
    worldTransform.ty = game.height; 
}; 

Я понятия не имею, если это путают некоторые вещи, но, похоже, это работает для моих начальных тестов. Я вижу, что значения x и y, переданные в drawRect(), теперь относятся к внизу слева прямоугольника, а не вверху слева. Это имеет смысл, но это то, о чем нужно знать. :-)

EDIT: Похоже, текст также инвертирован. : -/

 Смежные вопросы

  • Нет связанных вопросов^_^