Cocos2d iphone COCOS2D-删除与其他精灵碰撞的子对象
我正在做一个游戏,让玩家控制宇宙飞船。我想这样做,如果飞船精灵与太空垃圾碰撞,垃圾就会消失 这是到目前为止我的代码 HelloWorldLayer.hCocos2d iphone COCOS2D-删除与其他精灵碰撞的子对象,cocos2d-iphone,Cocos2d Iphone,我正在做一个游戏,让玩家控制宇宙飞船。我想这样做,如果飞船精灵与太空垃圾碰撞,垃圾就会消失 这是到目前为止我的代码 HelloWorldLayer.h #import <GameKit/GameKit.h> // HelloWorldLayer @interface HelloWorldLayer : CCLayerColor { CCSprite *_starShip; CCSprite *_Paddle1; CCSprite *_paddle2; } //
#import <GameKit/GameKit.h>
// HelloWorldLayer
@interface HelloWorldLayer : CCLayerColor
{
CCSprite *_starShip;
CCSprite *_Paddle1;
CCSprite *_paddle2;
}
// returns a CCScene that contains the HelloWorldLayer as the only child
+(CCScene *) scene;
@end
太空事物
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface SpaceThings : CCSprite
@property (nonatomic, assign) int minMoveDirection;
@property (nonatomic, assign) int maxMoveDirection;
-(id)initWithFile:(NSString *)file minMoveDirection:(int)minMoveDirection maxMoveDirection:(int)maxMoveDirection;
@end
@interface Astroids : SpaceThings
@end
@interface SpaceJunk : SpaceThings
@end
我想知道在代码的哪里放置CGRECT部分。正如我目前尝试在SpaceJunk alloc init部分中放置的一样,当飞船与垃圾碰撞时,它不会移除子对象
int setInterval = (arc4random() % 3);
[self schedule:@selector(gameLgoic:) interval:setInterval];
将setInterval值设为float,并为schedular设置较小的值
也不要在循环内部执行[spaceThings runAction
操作。如果需要,请执行一些条件检查,并仅在需要时运行
然后,当您的CGRectIntersectsRect彼此相交时将触发
愉快的编码。我尝试了你的建议,但没有解决问题。太空垃圾精灵与飞船精灵重叠不会导致移除特定的太空垃圾孩子。请尝试[spaceThings removeFromParentAndCleanup:true];只尝试了{[spaceThings removeFromParentAndCleanup:YES];}问题仍然存在。您正在创建多个spaceThings循环实例,如果未命中CGRectIntersectsRect,则该对象始终在屏幕中…保留NSMutable数组并添加spaceThings的所有实例很好。我建议您将对象的创建放在外侧并存储在数组中,在发生碰撞时删除,并从中删除来自数组的父n。好的,快乐编码。学会成为专家!非常感谢您的建议。创建数组确实解决了问题。
#import "SpaceThings.h"
@implementation SpaceThings
-(id)initWithFile:(NSString *)file minMoveDirection:(int)minMoveDirection maxMoveDirection:(int)maxMoveDirection
{
if ((self =[super initWithFile:file])){
self.minMoveDirection = minMoveDirection;
self.maxMoveDirection = maxMoveDirection;
}
return self;
}
@end
@implementation Astroids
-(id)init
{
if (self = [super initWithFile:@"astroid.jpeg" minMoveDirection:2 maxMoveDirection:5]){
}
return self;
}
@end
@implementation SpaceJunk
-(id)init
{
if (self = [super initWithFile:@"blueDot.jpg" minMoveDirection:4 maxMoveDirection:7]){
}
return self;
}
@end
int setInterval = (arc4random() % 3);
[self schedule:@selector(gameLgoic:) interval:setInterval];