- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道如何切换到游戏结束时角色与敌人相撞时的场景。我在 main.storyboard 下制作了一个场景,我想知道如何通过代码连接它,我只知道如何使用按钮连接它,但这不是我要找的,因为你死时不会按下按钮带您进入游戏结束场景。
UPDATE:
func gameOver() {
gameDelegate?.gameDelegateGameOver(score)
let gameOverScene: GameOverScene = GameOverScene(size: self.size)
self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0))
这就是检测到碰撞时我的 gameOver 的内容。是的,它确实带我到了一个新场景,但不是我在 main.storyboard 中制作的场景。
最佳答案
您可以做的是创建一个碰撞 bool 值,如果它为真(因此,发生了碰撞),您可以在更新中使用 view.presentScene(YOUR_SCENE, SK_ANIMATION)
呈现一个新场景功能。
编辑:
我从您获取代码的地方找到了教程(或者至少我假设您这样做了)并让它与以下内容一起使用:
在“didMoveView”中添加:
player.physicsBody?.categoryBitMask = PhysicsCategory.Player
player.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
player.physicsBody?.collisionBitMask = PhysicsCategory.None
player.physicsBody = SKPhysicsBody(circleOfRadius: player.size.width/2)
player.physicsBody?.dynamic = true
(PhysicsCategory.Player只是我在PhysicsCategory中添加的一个值)
然后,在添加敌人 Sprite 的函数中,您必须添加以使两者发生碰撞:
monster.physicsBody?.contactTestBitMask = PhysicsCategory.Player
最后但并非最不重要的一点是,您必须添加以下代码以将“操作”添加到 didBeginContact 函数的碰撞中:
if ((secondBody.categoryBitMask & PhysicsCategory.Monster != 0) &&
(firstBody.categoryBitMask & PhysicsCategory.Player != 0)) {
let gameOverScene = GameOverScene(size: self.size, won: false)
view?.presentScene(gameOverScene, transition: SKTransition.flipHorizontalWithDuration(0.5))
}
希望它现在对您有用!
关于swift - 使用 SKView 更改 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32184816/
我刚刚构建了一个 SpriteKit 演示应用程序。我不在下面的代码下 if let view = self.view as! SKView? { ... } (self.vi
我正在尝试创建一个基于 SpriteKit 的游戏,并尝试在继续之前建立基本的蓝牙连接,但是我的游戏在从菜单转到 GameScene 时崩溃了,并且我收到了“无法转换值”将“UIView”键入“SKV
我有一个 SKView 正在运行以进行游戏,并希望在关卡完成(或失败)时覆盖一个较小的 SKView。当用户选择一个 Action (重启、下一级等)时,我需要关闭这个 SKView([self re
我是 SpriteKit 的新手,看到这样的代码 let skView = view as! SKView 那么这个有什么用呢?另外,我对 view 和 skView、scene 和 GameScen
如题所示,didMove(to view: SKView) 和 didMoveToView(view: SKView) 有什么区别? 我知道 didMoveToView 是方法,并且该 View 在旧
下面的代码显示 SKView,直到您将 skHeight 更改为 2050 或更高的值(例如 5000)。 1) 如何让 SKView 在 2050 或 5000 的高度上也能显示? 2) SKVie
运行我的 SwiftUI 和 SpriteKit 应用程序时,我在日志中收到以下消息: 2019-11-18 21:58:57.631912+0000 PixelBattles[2812:121580
运行我的 SwiftUI 和 SpriteKit 应用程序时,我在日志中收到以下消息: 2019-11-18 21:58:57.631912+0000 PixelBattles[2812:121580
我喜欢我的代码是明确的,所以我想删除 storyboard文件并创建 SKView以编程方式。 到目前为止我已经尝试过: 我创建了一个 SpriteKit xcode 中的游戏项目。 删除了 Stor
class MyClass: UIViewController { var playerViewController = AVPlayerViewController() var playerView
我正在尝试根据我的 userAcceleration 围绕原点旋转我的整个 SKView。虽然旋转单个 Sprite 非常容易。我无法围绕原点旋转整个场景和所有 child 。希望这是有道理的。谢谢。
我是第一次尝试 Sprite 套件。只是为了说明这一点,我已经阅读了文档,但我还不能安静地掌握创建多个按钮的想法。我可以创建按钮。它们出现在我的 View 中,但我无法将功能附加到它们以指向不同的 V
我的默认 UIView 带有两个 subview 。一个是 UIButton,另一个是 SKView。按下按钮会触发 SKView 中的发射器。如果 SKView 不与按钮重叠,则效果很好。然而,一旦
我目前正在制作一个应用程序,该应用程序首先使用 UIKit,然后过渡到 SpriteKit。我现在想从应用程序的 SpriteKit 部分返回到 UIKit。这让我想知道是否有办法使用 Swift 从
我正在尝试使用图案作为 SKScene 的背景颜色: override func didMoveToView(view: SKView) { let backgroundImage:
我在 Storyboard中放置了两个 SKView,并通过 socket 将它们连接起来。他们都在渲染正确的内容,并更新他们的 FPS 显示。我可以更改他们的相机位置,并且两者都可以正确渲染。 但是
我的项目中有这段代码用于练习 SpriteKit。但是,由于某种意外的原因,它给了我这个错误(编译正常)。 仅供引用,我的 HelloScene.h 文件中没有任何内容。我希望这没关系。除了这些代码,
我似乎在我正在开发的游戏中遇到了一个特别奇怪的问题。该游戏包含三种游戏类型,每种类型都使用SKView作为游戏的显示。前两种游戏类型(称为普通游戏和国际象棋)可以正确更改代码中的背景颜色,如下所示:
如何从 SKView 中删除场景。我已经调用了 removeFromParent,将场景设置为 nil,几乎所有我能想到的但场景仍然显示。 最佳答案 我删除场景的方式是正确的,它是 scene.vie
您好,我从主菜单 UIViewController 开始玩我创建的游戏。但是如果我想退出回到主菜单,SpriteKit 中没有 prepareForSegue 函数。 如何从场景中返回主菜单? 我正在
我是一名优秀的程序员,十分优秀!