- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在开发一款游戏,每次我的测试节点与我的检查节点接触时都必须执行测试。由于这两个节点是游戏中唯一检查碰撞的节点,因此我决定使用此方法来启动测试。
问题是当 2 个节点物理交叉时,我一直无法让碰撞发挥作用。
当前代码将移动测试方 block ,直到它到达检查方 block ,但现在当它们相遇时没有任何反应。
我错过了什么吗?任何帮助将不胜感激。谢谢。
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
var test:SKSpriteNode!
var testTexture = SKTexture(imageNamed: "redsquare.png")
var check:SKSpriteNode!
var checkTexture = SKTexture(imageNamed: "bluesquare.png")
var moving:SKNode!
let testCategory: UInt32 = 1 << 0
let checkCategory: UInt32 = 1 << 2
override func didMoveToView(view: SKView) {
/* Setup your scene here */
self.physicsWorld.gravity = CGVectorMake(0.0, 0.0)
self.physicsWorld.contactDelegate = self
moving = SKNode()
self.addChild(moving)
//create test block
test = SKSpriteNode(texture: testTexture)
test.xScale = 0.1
test.yScale = 0.1
test.position = CGPointMake(0, self.frame.height - test.size.height)
test.physicsBody = SKPhysicsBody(rectangleOfSize: test.size)
test.physicsBody?.dynamic = false
test.physicsBody?.categoryBitMask = testCategory
test.physicsBody?.collisionBitMask = checkCategory
test.physicsBody?.contactTestBitMask = checkCategory
self.addChild(test)
//creates check block
check = SKSpriteNode(texture: checkTexture)
check.xScale = 0.1
check.yScale = 0.1
check.position = CGPointMake(self.frame.width, self.frame.height - check.size.height)
check.physicsBody = SKPhysicsBody(rectangleOfSize: check.size)
check.physicsBody?.dynamic = false
check.physicsBody?.categoryBitMask = checkCategory
check.physicsBody?.collisionBitMask = testCategory
check.physicsBody?.contactTestBitMask = testCategory
self.addChild(check)
// move action
let actionMove = SKAction.moveToX(self.frame.width, duration: 1.5)
let actionMoveDone = SKAction.moveToX(0, duration: 0)
let moveForever = SKAction.repeatActionForever(SKAction.sequence([actionMove,actionMoveDone]))
test.runAction(moveForever)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch: AnyObject in touches {
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
func didBeginContact(contact: SKPhysicsContact) {
// help here!
var firstBody:SKPhysicsBody
var secondBody:SKPhysicsBody
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask){
firstBody = contact.bodyA
secondBody = contact.bodyB
}
else{
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if((firstBody.categoryBitMask & testCategory) != 0 && (secondBody.categoryBitMask & checkCategory) != 0){
println("contact!")
}
}
}
最佳答案
根据Apple的文档,dynamic
属性控制基于体积的物体是否受到重力、摩擦、与其他物体的碰撞以及直接施加到物体的力或冲量的影响。
dynamic property : The default value is true. If the value is false, the physics body ignores all forces and impulses applied to it. This property is ignored on edge-based bodies; they are automatically static.
因此,将您的 dynamic
属性设置为 true。
node.physicsBody?.dynamic = true
关于快速碰撞不起作用。我认为 didBeginContact 中的代码有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28470430/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!