swift - 如果 Sprite 的下半部分很重要,如何检查碰撞(想想有茎的樱桃)

标签 swift sprite collision rect

我正在尝试在 Swift 中使用 SpriteKit 制作游戏。

我有一个移动的 Sprite ,它是一个宽度为 (sprite.frame.size.width) 和高度为 2*(sprite.frame.size.width) 的矩形

我只想检查宽度为 (sprite.frame.size.width) 和高度为 (sprite.frame.size.width)< 的正方形下半部分的碰撞/强>

我设置了 sprite.anchorPoint = CGPointMake(0.5, 0.25) 并使用方法 CGRectIntersectsRect 检查与另一个 Sprite 的碰撞。但这不起作用。碰撞区域保持为第一个矩形。

我不想使用调用 physicsBody 的方法,因为游戏中没有其他物理。

我在这里错过了什么?

最佳答案

我实际上发现了这个可用于缩小框架的UIEdgeInsets 函数。如果 spriteB 是有问题的 Sprite ,那么不要像这样测试:

如果 CGRectIntersectsRect(spriteA.frame, spriteB.frame) { //有事情发生 }

只是将边缘插入到spriteB的下半部分,像这样:

如果 CGRectIntersectsRect(spriteA.frame, UIEdgeInsetsInsetRect(spriteB.frame, UIEdgeInsetsMake(spriteB.frame.height/2, 0, 0, 0))) { //有事情发生 }

关于swift - 如果 Sprite 的下半部分很重要,如何检查碰撞(想想有茎的樱桃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30689006/

相关文章:

objective-c - 将 Swift 单元测试添加到混合语言 Xcode 项目

python - 创建一个组以在 Pygame 中添加我的类

Android - Sprite 和线程理解问题

java - Box2d 中动态主体为空

c++ - 如何使用在 C++ 中定义 map 的 2d 数组在 cmd 中为我的冒险游戏添加碰撞器?

Swift:SKEmitterNode 受 PhysicsWorld 重力影响?

swift - UICollectionViewCell 协议(protocol)不起作用

ios - 将值传递给另一个类并将其显示在该 View Controller 上

c# - 向上和向下缩放Sprite,以产生跳跃感

java - ImageView 之间的碰撞检测