Търсих много, за да накарам спрайта (_player) да бъде открит и да се сблъска с другия спрайт (цел) и да бъде премахнат след сблъсъка чрез нашия сайт на Google и stackoverflow, но не можах да получа решението в cocos2d-android, аз съм мога да намеря много информация за cocos2d-iphone не на android, дори аз сравних кода си с кода на iphone, но не можах да разбера. така бях направил.
public class GameLayer extends CCColorLayer
{
protected LinkedList<CCSprite> _targets;
protected LinkedList<CCSprite> _projectiles;
protected int _projectilesDestroyed;
protected CCSprite _player;
protected CCSprite _nextProjectile;
public static CCScene scene()
{
CCScene scene = CCScene.node();
CCColorLayer layer = new GameLayer(ccColor4B.ccc4(255, 255, 255, 255));
scene.addChild(layer);
return scene;
}
protected GameLayer(ccColor4B color)
{
super(color);
this.setIsTouchEnabled(true);
_targets = new LinkedList<CCSprite>();
_projectiles = new LinkedList<CCSprite>();
_projectilesDestroyed = 0;
CGSize winSize = CCDirector.sharedDirector().displaySize();
_player = CCSprite.sprite("Player2.png");
_player.setPosition(CGPoint.ccp(_player.getContentSize().width / 2.0f, winSize.height / 2.0f));
addChild(_player);
this.schedule("gameLogic", 1.0f);
this.schedule("update");
}
метод за актуализиране
public void update(float dt)
{
LinkedList<CCSprite> projectilesToDelete = new LinkedList<CCSprite>();
for (CCSprite projectile : _projectiles)
{
CGRect projectileRect = CGRect.make(projectile.getPosition().x - (projectile.getContentSize().width / 2.0f),
projectile.getPosition().y - (projectile.getContentSize().height / 2.0f),
projectile.getContentSize().width,
projectile.getContentSize().height);
LinkedList<CCSprite> targetsToDelete = new LinkedList<CCSprite>();
for (CCSprite target : _targets)
{
CGRect targetRect = CGRect.make(target.getPosition().x - (target.getContentSize().width),
target.getPosition().y - (target.getContentSize().height),
target.getContentSize().width,
target.getContentSize().height);
_player = CCSprite.sprite("Player2.png");
_player.setPosition(CGPoint.ccp(50,100));
CGRect playerRect = CGRect.make(_player.getPosition().x - (_player.getContentSize().width / 2.0f),
_player.getPosition().y - (_player.getContentSize().height / 2.0f),
_player.getContentSize().width,
_player.getContentSize().height);
if (CGRect.intersects(projectileRect, targetRect))
targetsToDelete.add(target);
else if (CGRect.intersects(playerRect, targetRect))
_player.remove(_player);
removeChild(_player, true);
}
for (CCSprite target : targetsToDelete)
{
_targets.remove(target);
removeChild(target, true);
}
if (targetsToDelete.size() > 0)
projectilesToDelete.add(projectile);
}