ios – 如果physicsBody.dynamic属性为NO,则两个物理实体不联系

ios – 如果physicsBody.dynamic属性为NO,则两个物理实体不联系,第1张

概述有两个物理机构:AirplaneNode: - (id)initAirplaneNode { self = [super initWithImageNamed:@"airplane.png"]; if (self) { self.name = @"player"; self.physicsBody = [SKPhysicsBody bodyWithR 有两个物理机构:AirplaneNode:
- (ID)initAirplaneNode {    self = [super initWithImagenamed:@"airplane.png"];    if (self) {        self.name = @"player";        self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.frame.size];        self.physicsBody.dynamic = NO;        self.physicsBody.affectedByGravity = NO;        self.physicsBody.categoryBitMask = AIRPLANE_category;        self.physicsBody.contactTestBitMask = BulLET_category;    }    return self;}

和一个BulletNode:

- (ID)initBulletNode {        self = [super initWithImagenamed:@"bullet.png"];    if (self) {        self.name = @"bullet";        self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.frame.size];        self.physicsBody.dynamic = NO;        self.physicsBody.usesPreciseCollisionDetection = YES;        self.physicsBody.categoryBitMask = BulLET_category;        self.physicsBody.contactTestBitMask = AIRPLANE_category;    }    return self;}

它们都将physicsBody.dynamic属性设置为NO.

问题是当子d击中飞机时,我的SKScene不会调用dIDBeginContact方法.但是,如果我为PlaneplaneNode或BulletNode指定physicsBody.dynamic属性为YES,则dIDBeginContact将被触发.

有办法解决这个问题吗?

PS:我真的不需要我的节点是动态的,因为它会导致不必要的行为:飞机在受到损坏时轻微移动,子d在飞行时有时会旋转.

解决方法 非动态(静态)物体永远不会发生碰撞,它们并不意味着首先改变它们的位置.

如果您不希望它们受到冲突的影响,请将其collisionBitMask设置为0.请参阅SKPhysicsBody reference.

总结

以上是内存溢出为你收集整理的ios – 如果physicsBody.dynamic属性为NO,则两个物理实体不联系全部内容,希望文章能够帮你解决ios – 如果physicsBody.dynamic属性为NO,则两个物理实体不联系所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1099170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存