Как я могу остановить перемещение SKSpriteNodes, когда вы нажимаете на них один раз? - PullRequest
1 голос
/ 26 апреля 2020

Я сделал спрайт игрока в 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()
                }
            }

Это не является серьезной проблемой, но, поскольку я планирую в конечном итоге превратить это в настоящую игру, было бы лучше, если бы это было исправлено, но я не могу понять, что я сделал не так. У меня есть несколько скриншотов симулятора, вот прямо при загрузке игры enter image description here

И это после нажатия enter image description here

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

Редактировать: Теперь, когда я ' Добавляя границы в игру, каждый раз, когда игрок достигает границы, элементы управления возвращаются назад, когда игра загружается, и теперь она продолжает перемещаться взад и вперед.

...