0

我有一个精灵(图像),当它与另一个分数碰撞时应该增加 10,更新方法中给出了相关代码,但它不是随机增加的。这是我的代码。

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);

            if (CGRect.intersects(projectileRect, targetRect))
                targetsToDelete.add(target);
            myscore += 10;
            showLabel(myscore);


        }
4

2 回答 2

3

将 myscore 增加 10 后,您需要像这样更新它

myscore += 10; 
updateTable(myscore); 
showLabel(myscore); 
addTarget(); 
于 2013-06-21T09:20:31.003 回答
1

您的分数增加应在以下情况下:

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);

    if (CGRect.intersects(projectileRect, targetRect)){
        targetsToDelete.add(target);
        myscore += 10;
        showLabel(myscore);
    }
}
于 2013-05-17T05:39:44.100 回答