Игрок прыгает через объект и приземляется на него - PullRequest
0 голосов
/ 10 апреля 2020

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

override func update(_ currentTime: TimeInterval) {
    //Avoid hitting ground while jumping
    if let playerBody = player.physicsBody{
        let dy = playerBody.velocity.dy
        if dy > 0 {
            playerBody.collisionBitMask &= ~1
            //playerBody.contactTestBitMask = obstacleCat
            //player.physicsBody?.categoryBitMask = playerCat
        }
        else{
            playerBody.collisionBitMask |= 1
        }
    }
}

func jump() {
    contactGround = false
    player.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
    player.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 25))
    jumpCounter += 1
    if jumpCounter > 2 {
        canJump = false
    }
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    switch gameState{
    case .playing:

        if canJump{
            jump()
        }
    }
}
...