Создание моей первой игры Phaser, используя v3. Это клон Астероидов, как учебный проект.
Я нарисовал свой собственный космический корабль, так что у меня есть png этого. Я еще не читал документы Фазера, меня не предупредили о правоте Фазера, и поэтому мой космический корабль направлен на север.
Теперь я сфотографировал это изображение как физическое тело аркады, и клавиши со стрелками управляют дросселем и рулем. Основная камера следует за PNG. Массовый успех ... за исключением того, что, когда игра загружается, космический корабль заметно указывает на север, но ускорение прямо "вперед" заставляет его скользить на восток (к вращению физики 0).
Я не хочу изменить мой образ. Я хочу узнать, как это использовать в Phaser, потому что это похоже на довольно простой элемент c в наборе инструментов: как настроить Phaser так, чтобы он получал активы, которые я умоляю, одалживаю или краду, как они есть.
Я надеюсь, что этого достаточно:
preload() {
this.load.image('player.ship.facingNorth', 'assets/images/player/ship-facingNorth.png')
}
create() {
// this image faces north (i.e. png angle = -90)
this.player = this.physics.add.image(VW_50, VH_50, 'player.ship.facingNorth')
// somehow tell phaser to rotate the image clockwise 90 degress
// this.player.angle = 90 // rotates visible pixels AND physics orientation -- they stay inconsistent
// this.player.body.angle = -90 // no effect
// this.player.body.transform.angle = 90 // no effect
// this.player.facing = 0.4 // no effect
// this.player.body.facing = 0.4 // no effect
// this.player.body.transform.facing = 0.4 // no effect
// this.player.preRotation = 0.7 // no effect
// this.player.body.preRotation = 0.7 // no effect
// this.player.body.transform.preRotation = 0.7 // no effect
this.cameras.main.startFollow(this.player, false, 0.1, 0.1, 0, 10)
this.cursors = this.input.keyboard.createCursorKeys()
}
update(time, delta) {
// ... cursor keys logic
const thrust = 100
if (this.rudder !== 0) {
this.player.rotation += this.rudder
}
this.physics.velocityFromRotation(this.player.rotation, thrust, this.player.body.velocity)
}
Я посмотрел документы для Physics.Arcade.Body , Physics.Arcade.Image , и Phaser.GameObjects.GameObject . Это все, что я мог бы попробовать.
Можно ли как-нибудь использовать изображение, ориентированное на север, и совместить видимые графики c с управляемой физикой скоростью?
Я представляю Я мог бы применить какое-то матричное преобразование к какой-то вещи мирового уровня (не уверен в деталях), но кажется, что этот подход не будет длиться долго, если я в конечном итоге буду использовать активы из нескольких источников с различными соглашениями.
Любая помощь приветствуется.