- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 func
联系人出现问题,因为第二个联系人不起作用(与 Bonus 和 Vaisseau 联系),但另外两个联系人不起作用。
这是我的代码:
功能:
func didBeginContact(contact: SKPhysicsContact) {
let PremierBody : SKPhysicsBody = contact.bodyA
let SecondBody : SKPhysicsBody = contact.bodyB
if ((PremierBody.categoryBitMask == PhysicsCategories.Meteorites) && (SecondBody.categoryBitMask == PhysicsCategories.Meteorites)) {
contactEntreMeteorites(PremierBody.node as! SKSpriteNode, Meteorites2: SecondBody.node as! SKSpriteNode)
}
else if ((PremierBody.categoryBitMask == PhysicsCategories.Bonus) && (SecondBody.categoryBitMask == PhysicsCategories.Vaisseau) ||
(PremierBody.categoryBitMask == PhysicsCategories.Vaisseau) && (SecondBody.categoryBitMask == PhysicsCategories.Bonus)){
gameOver(PremierBody.node as! SKSpriteNode, Vaisseau: SecondBody.node as! SKSpriteNode)
print("CONTACT")
}
else if ((PremierBody.categoryBitMask == PhysicsCategories.Meteorites) && (SecondBody.categoryBitMask == PhysicsCategories.Vaisseau) ||
(PremierBody.categoryBitMask == PhysicsCategories.Vaisseau) && (SecondBody.categoryBitMask == PhysicsCategories.Meteorites)){
gameOver(PremierBody.node as! SKSpriteNode, Vaisseau: SecondBody.node as! SKSpriteNode)
print("Couco")
}
}
这是我的物理类别:
struct PhysicsCategories {
static let Meteorites : UInt32 = 1
static let Bonus : UInt32 = 2
static let Vaisseau : UInt32 = 5
}
这在我的 func DidMoveToView 中:
Vaisseau = SKSpriteNode(texture: Vaisseau1)
Vaisseau.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)
Vaisseau.physicsBody = SKPhysicsBody(rectangleOfSize: Vaisseau.size)
Vaisseau.physicsBody?.affectedByGravity = false
Vaisseau.physicsBody?.categoryBitMask = PhysicsCategories.Vaisseau
Vaisseau.physicsBody?.contactTestBitMask = PhysicsCategories.Bonus
Vaisseau.physicsBody?.contactTestBitMask = PhysicsCategories.Meteorites
Vaisseau.physicsBody?.dynamic = false
Vaisseau.setScale(0.08)
self.addChild(Vaisseau)
我在此函数中创建了我的 SpriteNode
奖励:
func ApparitionBonus() {
let BonusSprite = SKSpriteNode(imageNamed: "Bonus.png")
var BonusApparitionX = UInt32(self.frame.size.width)
var BonusApparitionY = UInt32(self.frame.size.height)
BonusApparitionX = arc4random() % BonusApparitionX
BonusApparitionY = arc4random() % BonusApparitionY
BonusSprite.position = CGPointMake(CGFloat(BonusApparitionX),CGFloat(BonusApparitionY))
BonusSprite.setScale(0.8)
BonusSprite.physicsBody = SKPhysicsBody(circleOfRadius: 20)
BonusSprite.physicsBody?.affectedByGravity = false
BonusSprite.physicsBody?.categoryBitMask = PhysicsCategories.Bonus
BonusSprite.physicsBody?.contactTestBitMask = PhysicsCategories.Vaisseau
BonusSprite.physicsBody?.dynamic = false
self.addChild(BonusSprite)
let RotationBonus = SKAction.rotateByAngle(CGFloat(M_PI), duration: 3)
let wait = SKAction.waitForDuration(3)
let actionFini = SKAction.removeFromParent()
BonusSprite.runAction(SKAction.sequence([RotationBonus, wait, actionFini]))
BonusSprite.runAction(SKAction.repeatActionForever(RotationBonus))
}
最佳答案
在您的didMoveToView
中,当您调用时:
Vaisseau.physicsBody?.contactTestBitMask = PhysicsCategories.Bonus
Vaisseau.physicsBody?.contactTestBitMask = PhysicsCategories.Meteorites
您将 contactTestBitMask
设置为一个类别,然后再设置为另一个类别。您需要将它们按位或在一起。像这样的东西:
Vaisseau.physicsBody?.contactTestBitMask = PhysicsCategories.Bonus | PhysicsCategories.Meteorites
这将组合两个位掩码,使其能够联系Bonus
和Meteorites
。
如果您不希望 Sprite 发生碰撞,请将 collisionBitMask
设置为 0x0
(或者您想要表示 0 的任何方式):
Vaisseau.physicsBody?.collisionBitMask = 0x0
关于swift - 两个 SpriteNode 之间的接触问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33422280/
我有一个(移动的) Sprite 节点。 我想检测此节点一定范围内的其他(移动) Sprite 节点。一旦检测到一个,它应该执行一个 Action 。 扮演 Action 部分对我来说没问题,但我似乎
我正在制作一款有云彩移动的游戏,我希望当角色降落在云彩上时云彩会消失。然而,当我输入代码时,如果角色绕过它并在仍在下落时撞到云的底部或侧面,它就会消失。这是我用于检测角色和云何时击中的代码。 是否有办
我想实现一个带有“彩色突出显示”的 Sprite 节点。 “突出显示可以有多种颜色。这是在沙盒应用程序中完成的,以进行尝试。 我考虑过使用SKTextures来表示节点的“高光”。然而,使用这种方法,
当将 spriteNode 缩放到较小尺寸(或较大尺寸)时,spriteNode 默认从中心缩放,这通常没问题。然而,我需要我的 Sprite 从它 body 的最左边开始缩放。有什么方法可以改变 s
我正在学习如何编码,作为第一个项目,我认为创建一个针对计算机的小石头剪刀布游戏是个好主意。问题是,显然计算机可能不会显示他的选择,所以我必须创建一个函数,使随机图片 x (我使用苹果的笑脸)出现在屏幕
我想在没有 uiscrollview 的情况下滚动 Sprite 套件中的节点 //触摸移动 let touch: UITouch = touches.first as! UITouch; let l
我正在尝试使用以下方法创建我的用户 SpriteNode。纹理是 Kladde,图像也不为空。 func spawnPlayer() { if didFirstTap == true && i
所以基本上我有 coin 对象,我想在屏幕上启动它。我有以下代码在滑动时运行一些计算,但不确定什么与我当前的情况相关: override func touchesBegan(touches: Set,
我正在制作一个游戏,在该游戏中,在某些时候会出现一个新按钮和一个标签。问题是在某些情况下它们都不会出现。 override func touchesBegan(touches: Set, withE
我有两个类别 enum ColliderType:UInt32 { case bulletCategory = 1 case bossCategory = 2 } 我让我的类(class)使用 SKP
我一直在尝试让 Sprite 具有不止一种纹理,这样它看起来就像在移动一样。我正在查看其他问题,但他们所做的一切都没有解决我的问题,这是我的代码: var textures = [SKText
如何通过触摸在固定点上旋转 SpriteKit 节点。所以当用户拖动他的手指时它会转动。我也希望能够获得 rpm。 (之前有人问过这个问题,但我想知道如何使用 SpriteKit 来做) swift
我有这段代码可以对子弹节点施加力并使其向敌人移动。在这种情况下,火箭始终朝上。我的问题是如何旋转这颗子弹以面向节点头部的方向。 let asd=SKSpriteNode(imageNamed: "
我有一个函数,可以创建 8 发来自玩家的子弹,呈圆形向外发射。我认为问题在于此处的这一行: let endPoint = CGPoint(x: distance * cos(angle), y: d
所以我正在使用带有图像的 spritenode 并且我没有设置它的位置。有趣的是,我在设置它的位置时遇到了问题,所以我没有,它默认设置为页面中心(出于明显的原因),这最终是完美的。所以现在在我的 to
我正在尝试创建一个小游戏,其中 SpriteNode(又名玩家)以恒定速度垂直向上移动。我想用它的角度向左或向右转向。但是,我无法使用其角度正确移动播放器。 感谢您的宝贵时间。 这是我写的部分代码:
所以我有 3 个不同的障碍物,它们随机产生并在 3 秒后被移除,但是如果例如 Obstacle1 已经产生并且随机数告诉程序产生另一个 Obstacle1,我得到一个错误 "Terminating a
我试图将 Sprite 的初始角度设置为 90 度。我不想调用 Action ,有没有办法像设置位置一样设置 Sprite 的角度参数? 最佳答案 z旋转 您可以使用接受辐射的 SKNode 的 zR
我在使用 Swift 3 和 Spritekit 开发我的应用程序时遇到了一个问题。为了检测碰撞,我制作了四个独立的三角形组成一个正方形。当我将这些三角形作为一个单元旋转时,它们会重叠并且在旋转过程中
我的新游戏 Sprite 有问题... 我的“汽车”在第一圈完美地沿着赛道行驶,但从那时起,它似乎在每圈结束时都会发生偏移。有人能告诉我我做错了什么吗? - (void)createSceneCont
我是一名优秀的程序员,十分优秀!