作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Swift - SpriteKit
我正在制作我的第一个游戏,并且我有我的 var Player = SKSpriteNode()
还有 var platform = SKNode()
我想检测玩家何时在 y 方向上增加,以便我可以关闭 collisionBitMask
。因此,在跳跃时可以跳过平台,而在坠落时则可以降落在平台上。
所以我可以有这样的东西:
if player.position.y = increasing {
Player.physicsBody?.collisionBitMask = nil
}else{
Player.physicsBody?.collisionBitMask = PhysicsCategory.Platform
}
我环顾四周,找不到我想要的东西,除非我找错了东西。
非常感谢。
编辑:已解决,检查 EmilioPelaez 答案,仅显示我如何在此处稍微更改它。
在函数外部声明了 var lastY: CGFloat?
以及我的所有其他变量。
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
// Checking y direction
if Player.position.y > lastY {
// Player increasing in y direction
Player.physicsBody?.collisionBitMask = PhysicsCategory.Ground
} else {
// Player decreasing in y direction
Player.physicsBody?.collisionBitMask = PhysicsCategory.Ground | PhysicsCategory.Platform
}
lastY = Player.position.y
}
最佳答案
基本上,您想要做的是将当前值与前一帧中的值进行比较。
最简单的方法是创建一个变量,您可以在其中存储先前的值,并使用它进行比较。完成比较后,您将当前值存储在该变量中以供下一帧使用。
类似这样的事情:
var lastY: CGFloat?
// in your function
if let lastY = lastY {
if player.y > lastY {
// player.y is increasing
} else {
// player.y is decreasing
}
}
lastY = player.y
关于swift - 根据y值升序或降序更改collisionBitMask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37116006/
序 大家好呀,我是summo,这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛,2核2G的云服务器一年只要99块钱,懂行的人应该知道这个价格在业界已经是非常良心了
我尝试根据给定的级别顺序(BFS 顺序)构造 BST。我知道这是可能的,但我不知道我该怎么写。问题是我必须使用 BFS 序列。所以,我不能在这里使用递归,我必须迭代地编写我的程序......我发现这有
我是一名优秀的程序员,十分优秀!