在我的游戏中的某些点上,我想要大量的球落在屏幕上。一旦它们撞到地面并稍微反弹,我希望它们只是坐在那里,不再需要它们移动。
一旦我达到200个物理身体,游戏变得非常慢,所以我想要摧毁尸体。以下是我在代码中尝试的内容:
-(void)didBeginContact:(SKPhysicsContact *)contact {
if (contact.contactPoint.y < 150) {
if (contact.bodyA.categoryBitMask == MYPhysicsCategoryBall) {
NSLog(@"body a is ball");
contact.bodyA = nil;
}
if (contact.bodyB.categoryBitMask == MYPhysicsCategoryBall) {
NSLog(@"body b is a weapon");
}
}
这不起作用,因为contact.bodyA和contact.bodyB都是readonly,所以我必须解决这个问题,但除此之外,只需将实际的物理体设置为nil就可以破坏它并制作物理模拟器运行得更快?或者是否有更好的方法来解决性能问题?我希望能够添加200多个球,可能是500或600。
答案 0 :(得分:3)
使用contact.bodyA.node.physicsBody
:
-(void)didBeginContact:(SKPhysicsContact *)contact {
if (contact.contactPoint.y < 150) {
if (contact.bodyA.categoryBitMask == MYPhysicsCategoryBall) {
NSLog(@"body a is ball");
// contact.bodyA = nil;
contact.bodyA.node.physicsBody = nil;
}
if (contact.bodyB.categoryBitMask == MYPhysicsCategoryBall) {
NSLog(@"body b is a weapon");
}
}
我还没有测试过它