小编Dew*_*wan的帖子

SKPhysicsBody碰撞不起作用

下面是我的"Floor.swift"课程,下面基本上是一堆墙.我有来自屏幕顶部的对象,一旦Floor和SKSpriteNodes发生碰撞,我希望删除SKSpriteNode.以下是我的楼层课程.

import Foundation
import SpriteKit

class Floor: SKNode {
    override init() {
        super.init()

        let leftWall = SKSpriteNode(color: UIColor.clear, size: CGSize(width: 5, height: 50))
        leftWall.position = CGPoint(x: 0, y: 50)
        leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size)
        leftWall.physicsBody!.isDynamic = false
        self.addChild(leftWall)

        let rightWall = SKSpriteNode(color: UIColor.clear, size: CGSize(width: 5, height: 50))
        rightWall.position = CGPoint(x: 375, y: 50)
        rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size)
        rightWall.physicsBody!.isDynamic = false
        self.addChild(rightWall)

        let bottomWall = SKSpriteNode(color: UIColor.clear, size: CGSize(width: 500, height: 10))
        bottomWall.position = CGPoint(x: 150, y: -5)
        bottomWall.physicsBody = SKPhysicsBody(rectangleOf: …
Run Code Online (Sandbox Code Playgroud)

sprite-kit skphysicsbody swift

6
推荐指数
1
解决办法
242
查看次数

键盘可见/不可见时显示/隐藏导航栏项 | 用户界面

我花了很多时间研究和使用不同的代码来完成这项工作,但似乎无法弄清楚。下面您将看到两段代码,其中一段代码创建“完成”栏按钮项,另一段代码检查键盘是否存在并在单击按钮时将其关闭。我遇到的一个问题是,我只希望在键盘存在时显示条形按钮。我希望在键盘消失后或什至在首先打开键盘之前隐藏条形按钮。你现在如何用 SwiftUI 做到这一点?

.navigationBarItems(trailing:
            Button(action: {
                if UIApplication.shared.isKeyboardPresented {
                    UIApplication.shared.endEditing()
                }
            }, label: {
                Text("Done")
            })

extension UIApplication {
    func endEditing() {
        sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
    }
    /// Checks if view hierarchy of application contains `UIRemoteKeyboardWindow` if it does, keyboard is presented
    var isKeyboardPresented: Bool {
        if let keyboardWindowClass = NSClassFromString("UIRemoteKeyboardWindow"),
            self.windows.contains(where: { $0.isKind(of: keyboardWindowClass) }) {
            return true
        } else {
            return false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

navigation xcode list swiftui

3
推荐指数
1
解决办法
442
查看次数

SKSpriteNode坚持使用init(edgeLoopF​​rom :) - SKPhysicsBody

我在下面有一个名为"Floor"的单独课程.

class Floor: SKNode {
    override init() {
        super.init()
        //let edgeFrame = CGRect(origin: CGPoint(x: 1,y: 1), size: CGSize(width: 1078, height: 1950))
        //self.physicsBody = SKPhysicsBody(edgeLoopFrom: edgeFrame)

        let borderBody = SKPhysicsBody(edgeLoopFrom: self.frame)
        borderBody.friction = 0
        self.physicsBody = borderBody

        // Apply a physics body to the node
       // self.physicsBody?.isDynamic = false

        // Set the bit mask properties
        self.physicsBody?.categoryBitMask = floorCategory
        self.physicsBody?.contactTestBitMask = nailDropCategory
        self.physicsBody?.collisionBitMask = balloonCategory
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemted")
    }
}
Run Code Online (Sandbox Code Playgroud)

我基本上已经下降了SKSpriteNode,它从屏幕顶部开始,然后到达触及"Floor"的底部并移除自身,然后再次从顶部重新开始.我遇到的问题是我的所有SKSpriteNode一直卡在最顶层而不是掉落在屏幕边框周围.如何告诉我的应用程序忽略这些特定节点并让它们进入?感谢任何帮助!


这是在屏幕上左右移动的对象,但它只是在没有edgeLoop的情况下从屏幕的一侧掉落

if let …
Run Code Online (Sandbox Code Playgroud)

sprite-kit skphysicsbody skspritenode swift

2
推荐指数
1
解决办法
220
查看次数