gpt4 book ai didi

ios - 如果 physicsBody.dynamic 属性为 NO,则两个物理体不接触

转载 作者:可可西里 更新时间:2023-11-01 03:37:30 24 4
gpt4 key购买 nike

有两个物理体:一个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

问题是当子弹击中飞机时,我的 SKScene 没有调用 didBeginContact 方法。但是,如果我为 AirplaneNodeBulletNode 指定 physicsBody.dynamic 属性为 YESdidBeginContact 正在开火。

有办法解决吗?

PS:我真的不需要我的节点是动态的,因为它会导致不良行为:飞机在受损时会轻微移动,而子弹在飞行时有时会旋转。

最佳答案

非动态(静态)物体永远不会发生碰撞,它们本来就不会改变它们的位置。

如果您不希望它们受到碰撞的影响,请将它们的 collisionBitMask 设置为 0。引用SKPhysicsBody reference .

关于ios - 如果 physicsBody.dynamic 属性为 NO,则两个物理体不接触,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19721567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com