小编Con*_*sed的帖子

如何解释这个物理体位掩码系统的Swift SpriteKit示例代码

我正在深入研究Apples SpriteKit和GameplayKit示例代码,并发现了一个名为'DemoBots'的项目,用Swift编写.在项目中使用了一些非常有趣的概念,我想要适应我的项目.

我已经在将碰撞处理封装到一个处理程序类中,这与在该示例代码中处理碰撞的方式非常相似.

在这个项目中,我找到了一个名为的结构的代码RPColliderType:

struct RPColliderType: OptionSetType, Hashable, CustomDebugStringConvertible {
    // MARK: Static properties

    /// A dictionary to specify which `ColliderType`s should be notified of contacts with other `ColliderType`s.
    static var requestedContactNotifications = [RPColliderType: [RPColliderType]]()

    /// A dictionary of which `ColliderType`s should collide with other `ColliderType`s.
    static var definedCollisions = [RPColliderType: [RPColliderType]]()

    // MARK: Properties

    let rawValue: UInt32

    // MARK: Options

    static var Obstacle: RPColliderType  { return self.init(rawValue: 1 << 0) }
    static var PlayerBot: RPColliderType { return …
Run Code Online (Sandbox Code Playgroud)

bit-masks sprite-kit swift swift-dictionary gameplay-kit

5
推荐指数
1
解决办法
178
查看次数

在Xcode 8中为SKTileMapNode的tile提供物理

我正在学习Swift,作为一个项目,我正在开发一个类似于超级马里奥的基于平铺的2D游戏,我的角色会走路并跳上瓷砖.

最新版本的Xcode和Sprite Kit可以直接在Xcode中创建Tile Map.

在新的Xcode和Sprite工具包的演示中,这个人展示了一个类似于我正在做的游戏.

https://developer.apple.com/videos/play/wwdc2016/610/ (大约20分钟).

他提到我给Tiles用户数据属性,并且在代码中我们搜索具有该用户数据的所有tile并给它们一些物理属性,以便角色可以碰撞或与它们交互(在我的情况下,我的角色不会掉落)或者穿过瓷砖).

所以基本上,这个想法是给那些瓦片一个物理体,但这不能用SKphysicsBody来完成.所以必须有另一种方式,因为我是Swift的新手,我很想念它.

如果有人知道这一点,我将非常感谢帮助.

如果问题不清楚,请告诉我,因为我也是堆栈溢出的新手.

xcode sprite-kit skphysicsbody swift sktilemapnode

5
推荐指数
2
解决办法
1990
查看次数

Swift switch case使用数组的内容,语法?

来自Apple的Swift Book有一个使用元音作为案例的开关示例.

题. 而不是有这个元音列表,是否可以使用包含此内容的数组?如果是这样,这样做的语法是什么?


〜来自Apple Swift Book~

以下示例从小写字符串中删除所有元音和空格,以创建一个神秘的拼图短语:

let puzzleInput = "great minds think alike"
var puzzleOutput = ""
for character in puzzleInput.characters {
    switch character {
    case "a", "e", "i", "o", "u", " ":
        continue
    default:
        puzzleOutput.append(character)
    }
}
print(puzzleOutput)
// Prints "grtmndsthnklk"
Run Code Online (Sandbox Code Playgroud)

arrays syntax switch-statement swift

5
推荐指数
1
解决办法
2672
查看次数

在Swift中从文件名中删除后缀

当试图从a中删除后缀时filename,我只留下后缀,这正是我想要的.

我做错了什么(有多少事):

let myTextureAtlas = SKTextureAtlas(named: "demoArt")

let filename = (myTextureAtlas.textureNames.first?.characters.split{$0 == "."}.map(String.init)[1].replacingOccurrences(of: "\'", with: ""))! as String

print(filename)
Run Code Online (Sandbox Code Playgroud)

这打印png出的是整件事中最无聊的部分.

string split swift suffix

3
推荐指数
7
解决办法
5798
查看次数

如何到达,然后删除SKNode的父级?

A SKSpriteNode有一个父母,该父母是随机分配的,并且不知道是谁。

如何SKSpriteNode找到它的父级,然后从场景中删除父级,从而删除自身和父级?

parent ios sprite-kit skspritenode swift

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

使简单元组符合Hashable,因此可以是Dictionary Key

我想用一个非常简单的元组作为关键:

(Int, Int)
Run Code Online (Sandbox Code Playgroud)

字典键需要是Hashable.我学到了

但是找不到我如何使这个简单的元组Hashable,并且最好在协议一致性方面做斗争.

更深刻的是,CGPoint可以解决我的问题.它可以是这种格式,但不可清除.

是否可以扩展CGPoint以便它可以清洗?如果是这样,怎么样?

编辑:CGPoint选择的Int变体的图像.

在此输入图像描述

dictionary protocols hashable swift

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

如何使用/实现pause()来暂停SKAudioNode?

文档:

暂停()

创建一个告诉音频节点暂停播放的操作。

声明类 funpause() -> SKAction

此操作只能在 SKAudioNode 对象上执行。音频已暂停,如果重新启动,则会在暂停处恢复。此操作不可逆转。

请原谅我的无知,我只是不知道如何使用它来暂停SKAudioNode,所以没有尝试任何代码,并且没有代码可显示,因为我不知道如何使用它,并找到了这个准系统文档太轻了。

audio sprite-kit skaudionode

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

如何将我的Voxel模型用于我的SKScene游戏?

我在MagicaVoxel中创建了一些体素对象,是一个用于创建体素模型的程序.我完成了一个.它的出口选项如下:

obj,ply,mc,2d,iso,slab,xraw,qb

我应该选择哪种文件格式,然后如何将其导入到SceneKit游戏项目中?

voxel scenekit

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

自己。在尾随 swift 关闭,意义和目的?

每当我在动作上使用尾随闭包时......示例:

run(SKAction.wait(forDuration: 10)){timeRemains = false}
Run Code Online (Sandbox Code Playgroud)

我看到这个:

对闭包中的属性(任何东西)的引用需要明确的 'self' 以明确捕获语义。

在此处输入图片说明

这是什么意思?它是关于什么的?我很好奇,因为我只在我想在尾随闭包中调用的属性或函数的上下文/范围内这样做,所以不知道为什么我需要 `self 并且对这个词的使用着迷

“语义”

这里。它是否具有某种深刻的含义,如果我理解了这一点,我会神奇地理解闭包吗?

closures scope swift

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

如何在场景转换尝试中处理"无场景"?

在一个应该加载一个场景的按钮中,我试图学习使用aa guard语句,但是它在四个"逃脱"中的每一个中都做了很多的困惑.并且不知道在处理没有场景的情况时我应该做些什么.

这是正确的用在这里: continue,return,breakthrow

而且......为什么?

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

    for touch: AnyObject in touches {

        let location = touch.location(in: self)

        if self.rr.contains(location) {
            guard let nextScene = goesTo
                else {print(" No such Scene ")
                continue } // continue, return, break, throw !!!!????
            loadScene(withIdentifier: nextScene)
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

sprite-kit skscene swift

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