作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个球在屏幕上移动的游戏,我想创建一个球可以进入的洞(就像在台球中发生的那样)
那可以是一个黑色背景的简单圆形 SKNode 吗?在这种情况下,我应该在球越过洞时将球藏起来(这是一个非常糟糕的效果)
还有其他可用的功能/想法吗?谢谢
最佳答案
在这种情况下我会做的是为这个洞创建一个 SKSpriteNode,只有一个黑色图像作为圆圈。然后当两个节点发生碰撞时,您删除球节点。顺便说一下,我假设您正在 GameScene 中执行此操作
首先,为您的碰撞检测器创建一个枚举:
enum ColliderType:UInt32 {
case ball = 1
case blackhole = 2
}
创建一个基本的黑洞节点
let blackHole:SKNode = SKSpriteNode(imageNamed: "NameOfImage")
blackHole.physicsBody = SKPhysicsBody(circleOfRadius: side.size.width/2)
blackHole.physicsBody!.dynamic = false
//These 3 lines of code basically say to pay attention to collisions
blackHole.physicsBody!.categoryBitMask = ColliderType.blackhole.rawValue
blackHole.physicsBody!.contactTestBitMask = ColliderType.ball.rawValue
blackHole.physicsBody!.collisionBitMask = ColliderType.ball.rawValue
self.addChild(side)
另外,在设置球的物理属性的地方,插入这段代码
(Name of Sprite).physicsBody!.categoryBitMask = ColliderType.ball.rawValue
(Name of Sprite).physicsBody!.contactTestBitMask = ColliderType.blackhole.rawValue
(Name of Sprite).physicsBody!.collisionBitMask = ColliderType.blackhole.rawValue
然后,这就是您检测碰撞的地方。
func didBeginContact(contact: SKPhysicsContact)
{
//variable stores the two things contacting
let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
switch(contactMask){
case ColliderType.ball.rawValue | ColliderType.blackhole.rawValue:
//deletes the ball as a Node
contact.bodyB.node?.removeFromParent()
default:
return
}
}
让我知道是否有任何混淆或者我是否需要解释更多
关于ios - Spritekit - 如何创建一个像台球口袋一样的洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29969720/
嘿嘿我正在用 C++ 编写的 OpenGL 创建台球 table 模拟器我已经绘制了基本表格,但现在我需要添加一些口袋我希望口袋是像 C 形一样的基本曲线我不太清楚该怎么做我已经尝试过 triangl
我是一名优秀的程序员,十分优秀!