问题标签 [skphysicscontact]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
41 浏览

swift - 获取在 didBegin 中扩展 SKSpriteNode 的类

我有一个名为Ball的类,它扩展了 SKSpriteNode类:

在我的GameScene中,我检测到元素上的碰撞:

如何从联系人变量中调用didBegin()中的setScore() ?

谢谢

0 投票
1 回答
44 浏览

swiftui - SpriteKit 场景中的幻像按钮

我有一个简单的游戏,玩家需要进行三轮比赛才能获得最高分。gameScene 存在于 SwiftUI 视图中,创建方式如下:

使用 SpriteView() 从视图主体(在 ZStack 内的 GeometryReader 内)调用它。代码运行良好,直到我在新的 iPhone 13 上进行测试,这给了我各种古怪和意想不到的行为。我现在不会详细说明它们,因为我已经修复了大部分,但我仍然留下了一个“幻影”开始按钮。它旨在根据正在播放的回合显示不同的文本(即:“开始”、“再试一次”、“最后机会”),使用精确计数回合的变量。但是,我在第一轮结束时得到了这个:

重叠测试按钮的屏幕截图

当这个科学怪人按钮被点击时,新一轮开始。但是, SKPhysicsContactDelegate didBegin(_:) 不会被调用,并且冲突被忽略。(在这里我普遍感到困惑,我不知道这是一个单独的问题,还是在我解决重叠按钮问题时会消失的问题。)无论如何,这里是 startButton 的相关代码:

在 didMove(查看:SKView)中,初始启动按钮的调用方式如下:

第二轮和第三轮的按钮在 gameOver() 函数中调用,如下所示:

我最初有一个 switch 语句而不是两个 if 语句,但这产生了同样的问题。打印到控制台的语句表明每一轮只调用一个按钮,但结果表明有些不同。有什么线索吗?(抱歉,如果我没有提供足够的代码进行评估。)