【问题标题】:How can I increase the hit range of a node?如何增加节点的命中范围?
【发布时间】:2016-03-09 00:21:12
【问题描述】:

如何设置使用纹理初始化的节点的半径或命中范围 - 图像?当然我可以通过增加它的大小来做到这一点,但实际上我想在不调整图片大小的情况下做到这一点。这个节点以很小的速度在屏幕上移动。 这是我的代码:

monster.physicsBody = SKPhysicsBody(circleOfRadius: 50.0)

如何检测物理体内的触摸?我知道它在哪里,我打开了 showPhysics。请告诉我当我在这个物理体 circleOfRadius 内部触摸时如何做某事:任何东西!

【问题讨论】:

  • 你的物理身体决定了命中,只是把它放大
  • “结果完全没有改变”是什么意思?你是说物理体保持不变?如果是这样,我看不出怎么可能。转动视觉物理表示,看看真正发生了什么......(skView.showsPhysics = true)
  • 嗯,我的意思是用圆圈设置SKPhysicsBody后,命中范围不受影响。它仍然和节点一样大!所以物理体发生了变化,但命中范围没有变化。另一件事是,在设置了这个之后,发生了一件奇怪的事情——节点向正确的方向移动,但是它们上下移动太快了,不知道为什么会这样。 showPhysics 属性帮助我将图片可视化,感谢您的提示 :)
  • 听起来好像您的场景中可能发生了更多您可能不知道的事情。要记住的另一件事是,您没有理由不能使用自己的物理设置将子节点添加到精灵中(例如,如果您想检测碰撞的方向)。
  • 我整理了如何修复意外上下和旋转的bug。实际上,我很高兴为什么没有人知道如何做到这一点。它只是物理体的一个属性,仅此而已。我会更新我的问题,这样你们就会知道我还需要什么——命中范围! :D

标签: swift sprite-kit skspritenode


【解决方案1】:

只需添加一个physicsBody 并指定hitbox 的大小:

self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: 8, height: 8) )

你也可以用圆形来初始化它:

self.physicsBody = SKPhysicsBody(circleOfRadius: 8.0)

【讨论】:

  • 这看起来是正确而直接的解决方案,但经过我的测试,结果根本没有改变。我将使用我用于节点的代码更新我的帖子。
  • 好的,你知道如何检测这个物理体内部的触摸吗?
猜你喜欢
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
相关资源
最近更新 更多