Ios 触碰圆形雪碧超大尺寸
我有一个简单的spritekit项目,在这个项目中,我注意到与我的sprite注册的接触点发生在圆圈物理体之外 在此演示: showPhysics开启时: 生成圆的对象的代码:Ios 触碰圆形雪碧超大尺寸,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我有一个简单的spritekit项目,在这个项目中,我注意到与我的sprite注册的接触点发生在圆圈物理体之外 在此演示: showPhysics开启时: 生成圆的对象的代码: func spawnObject() { object = SKSpriteNode(imageNamed: "Oval") //object.fillColor = SKColor.white object.name = "ball" object.position = CGP
func spawnObject() {
object = SKSpriteNode(imageNamed: "Oval")
//object.fillColor = SKColor.white
object.name = "ball"
object.position = CGPoint(x: 280, y: 520)
object.physicsBody = SKPhysicsBody(circleOfRadius: object.size.width / 2)
object.physicsBody!.isDynamic = true
object.physicsBody!.contactTestBitMask = object.physicsBody!.collisionBitMask
object.physicsBody?.friction = 0.2
object.physicsBody?.restitution = 0.2
object.physicsBody?.mass = 5
addChild(object)
}
圆圈之间的相互作用非常完美——看起来触碰是异常现象
如有任何帮助,将不胜感激:)
编辑:
触摸代码示例:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let location = touch.location(in: self)
let tappedNodes = nodes(at: location)
for node in tappedNodes {
if node.name == "ball" {
node.alpha = 0.5
}
}
}
}
override func touchsbegind(touch:Set,带有事件:UIEvent?){
如果让触摸=先触摸{
让位置=触摸。位置(in:self)
设tappedNodes=节点(位于:位置)
对于tappedNodes中的节点{
如果node.name==“ball”{
node.alpha=0.5
}
}
}
}
在视图控制器中打开物理视觉表示,看看有什么问题。谢谢你的想法。我添加了一个屏幕截图,显示了它在showPhysics打开时的外观(基本上是一样的——它仍然没有显示正在单击的内容)然后它可能与你如何处理触摸有关。我使用了我在各种教程中看到的似乎非常基本的代码-我在上面编辑过。你可以使用SKPhysicsWorld中的bodyAtPoint或BodySetPoint方法。其他解决方案也不是微不足道的。另外,我不记得这是否是SKShapeNode的工作方式,但即使它的行为与SKSpriteNode不同,它的性能也不好,所以我想这不是您的选择(我看到您在场景中有许多对象)。在视图控制器中打开物理视觉表示,看看有什么问题。感谢您的想法。我添加了一个屏幕截图,显示了它在showPhysics打开时的外观(基本上是一样的——它仍然没有显示正在单击的内容)然后它可能与你如何处理触摸有关。我使用了我在各种教程中看到的似乎非常基本的代码-我在上面编辑过。你可以使用SKPhysicsWorld中的bodyAtPoint或BodySetPoint方法。其他解决方案也不是微不足道的。此外,我不记得这是否是SKShapeNode的工作方式,但即使它的行为与SKSpriteNode不同,它的性能也不好,因此我猜这不是您的选择(我看到您在场景中有许多对象)。