Я сделал спрайт игрока в gamescene.swift и сетку, чтобы игрок мог двигаться дальше, и чтобы переместить игрока, которого я создал, кнопки вверх, вниз, влево и вправо. Я сделал положение кнопки относительно игрока, потому что я использую узел камеры, но по какой-то причине они начинают ближе к игроку, когда начинается игра, но когда вы нажимаете одну из них, они перемещаются в свои правильные позиции и остаются там. В обеих позициях они функционируют, но они меняются при первом нажатии на них. Вот мой код для кнопок внутри класса, но не для функции
func addUpArrow() {
upArrow.position = CGPoint(x: player.position.x + 950, y: player.position.y + -370)
upArrow.name = "upArrow"
upArrow.size = CGSize(width: 120, height: 120)
addChild(upArrow)
}
func addDownArrow() {
downArrow.position = CGPoint(x: upArrow.position.x, y: upArrow.position.y - 100)
downArrow.name = "downArrow"
downArrow.size = CGSize(width: 120, height: 120)
addChild(downArrow)
}
func addLeftArrow() {
leftArrow.position = CGPoint(x: upArrow.position.x - 50, y: upArrow.position.y - 50)
leftArrow.name = "leftArrow"
leftArrow.size = CGSize(width: 120, height: 120)
addChild(leftArrow)
}
func addRightArrow() {
rightArrow.position = CGPoint(x: upArrow.position.x + 50, y: upArrow.position.y - 50)
rightArrow.name = "rightArrow"
rightArrow.size = CGSize(width: 120, height: 120)
addChild(rightArrow)
}
А затем внутри функции didMove я вызываю функции, чтобы добавить кнопки и убедиться, что они остаются относительно игрока, каждый раз Вы нажимаете на одну из них, она удаляет их и заменяет их новыми, например:
for node in touchedNode {
if node.name == "upArrow" {
moveUp()
removeDirectionalButtons()
addDirectionButtons()
}
if node.name == "leftArrow" {
moveLeft()
removeDirectionalButtons()
addDirectionButtons()
}
if node.name == "rightArrow" {
moveRight()
removeDirectionalButtons()
addDirectionButtons()
}
if node.name == "downArrow" {
moveDown()
removeDirectionalButtons()
addDirectionButtons()
}
}
Это не является серьезной проблемой, но, поскольку я планирую в конечном итоге превратить это в настоящую игру, было бы лучше, если бы это было исправлено, но я не могу понять, что я сделал не так. У меня есть несколько скриншотов симулятора, вот прямо при загрузке игры
И это после нажатия
Я знаю, что это небольшая проблема, но она не выглядит правильно или профессионально, поэтому я бы хотел ее исправить, но я не знаю, как это сделать.
Редактировать: Теперь, когда я ' Добавляя границы в игру, каждый раз, когда игрок достигает границы, элементы управления возвращаются назад, когда игра загружается, и теперь она продолжает перемещаться взад и вперед.