Как бы я установил границу вокруг сетки isometri c? - PullRequest
3 голосов
/ 27 апреля 2020

Итак, я сделал изометрическую сетку c, которая была бы миром / уровнем игры, и я хочу установить границы вокруг сетки, чтобы игрок не мог go от них отойти. Поскольку все это наклонно, и функции, которые я написал, чтобы сделать сетки автоматически размещающими плитки, я не могу пробовать и ошибки CGPoints, пока я не получу их правильно. Вот код, который я использовал для сетки

func newTile(size:CGSize) -> SKShapeNode {
            let shape = SKShapeNode()
            let path = UIBezierPath()
            path.move(to: CGPoint(x:0, y:size.height / 2.0))
            path.addLine(to: CGPoint(x:size.width / 2.0, y:0))
            path.addLine(to: CGPoint(x:0, y:-size.height / 2.0))
            path.addLine(to: CGPoint(x:-size.width / 2.0, y:0))
            path.close()
            shape.path = path.cgPath
            shape.lineWidth = 1.0
            shape.fillColor = SKColor.gray
            return shape
        }



        func tilePosition(col:Int, row:Int) -> CGPoint {
            let x = (CGFloat(row) * tileWidth  / 2.0) + (CGFloat(col) * tileWidth  / 2.0)
            let y = (CGFloat(col) * tileHeight / 2.0) - (CGFloat(row) * tileHeight / 2.0)
            return CGPoint(x: x-2000, y: y-100)
        }

        let tileHeight:CGFloat = 45.0
        let tileWidth:CGFloat = 90.0
        let numRows = 40
        let numCols = 40
        let size = CGSize(width: tileWidth, height: tileHeight)

        for row in 1...numRows {
            for col in 1...numCols {
                let tile = newTile(size: size)
                tile.position = tilePosition(col: col, row: row)
                self.addChild(tile)
            }
        }

Как бы я установил границу для последней плитки, которую он создает?

1 Ответ

0 голосов
/ 04 мая 2020

Идеи ... -

Попробуйте мыслить с точки зрения игрока и сетки, затем мы назначаем границу путем столкновения (пересечения), где находится игрок и вне сетки. Например, вне grid.x

ИЛИ

кажется, что у вас есть сетка nxm, поэтому вы можете попытаться определить, можете ли вы назначить игрока в сетке [] [], иначе он не сможет уйти (если пошагово ...)

...