#javascript #logic #phaser-framework #calculation
#javascript #Логические #phaser-framework #вычисление
Вопрос:
Я делаю учебное пособие по Phaser 3 (javascript framework для создания 2d и 3d игр), и мне интересно узнать, как Phaser 3 обрабатывает позицию y из этого простого вычисления:
/**
* @param {Phaser.GameObjects.Sprite} Sprite
*/
addCarrotAbove(sprite)
{
// this one!!!!!
const y = sprite.y - sprite.displayHeight
/** @type {Phaser.Physics.Arcade.Sprite} */
const carrot = this.carrots.get(sprite.x, y, 'carrot')
this.add.existing(carrot)
carrot.body.setSize(carrot.width, carrot.height)
return carrot
}
и при разборе другого объекта для этой функции, которая вместо спрайта является автоматической утилизацией платформы, которую я написал / итерация:
```update(t, dt)
{
this.platforms.children.iterate(child => {
/** @type {Phaser.Physics.Arcade.Sprite} */
const platform = child
const scrollY = this.cameras.main.scrollY
if (platform.y >= scrollY 600)
{
platform.y = scrollY - 60
platform.body.updateFromGameObject()
// create a carrot above the platform being reused
this.addCarrotAbove(platform)
}
})```
он автоматически помещает морковь поверх платформ (при выполнении функции)
Как он это делает? Единственная строка, которая меня интересует, — это переменная y, которую я создал с помощью const . Позиция моркови вычисляется с помощью этого простого вычисления, но я не могу понять, как он каждый раз помещает морковь поверх платформы. Спасибо сообществу stackoverflow!
Ответ №1:
Неважно, я понял это. Для тех, у кого такая же проблема, и кто не может, функция платформы утилизации, которую я написал, использует прокрутку камеры для отправки платформ вверх, и это дает координате Y отрицательное значение. Чтобы создать морковь не внутри платформы (которая была бы sprite.y) и над платформой вы ВЫЧИТАЕТЕ высоту отображения спрайта, а не добавляете два, потому что спрайт.y — отрицательное значение, и, вычитая его, вы отправляете морковку вверх на величину высоты отображения в пикселях. Надеюсь, я помог.