【发布时间】:2023-03-22 02:12:02
【问题描述】:
在带有 SpriteKit 的 IOS 7 中,如何仅删除物理实体但将节点留在场景中?我试图让碰撞发生,然后让汽车演员冲破障碍墙。
for (SKSpriteNode *node in _obstacles)
{
node.position = CGPointMake(node.position.x - 2, node.position.y);
if( [_car intersectsNode: node] && node.physicsBody.collisionBitMask == 0)
{
NSLog(@"We have a hit!");
_lives--;
//prevent simultaneous hit
node.physicsBody.collisionBitMask = 1;
node.physicsBody.contactTestBitMask = 1;
node.physicsBody.dynamic = NO;
node.physicsBody = nil;
// [removeRequired addObject:node];
//flash the car to show momentary invuln
if(_lives <= 0)
{
_gameOver = YES;
}
}
else if( (node.position.x + (node.size.width / 2)) < 0)
{
[removeRequired addObject:node];
}
}
但删除似乎没有得到尊重。我可以看到发生了多次点击(作为参考,此代码是从更新方法调用的。
【问题讨论】:
-
您不想移除汽车的物理车身?
-
您是否将物理体单独存储在其他地方?将其设置为 nil 就足够了
标签: ios physics sprite-kit