2016-01-26 3 views
2

Je suis en train de faire un jeu de réaction en 2D avec un kit de sprite et j'ai encore le même problème. J'ai déjà posé cette question une fois et ai eu de bonnes réponses et tout a fonctionné finde mais maintenant je suis coincé encore. Comme le titre le dit, je veux accélérer mon jeu tous les 50 points, mais il accélère juste quand j'obtiens le bon nombre de points comme 50, 100, 150 .. Le problème est que j'ai des points de combo et c'est toujours quelques points de plus. Par exemple de 48 à 51 points, donc ça n'accélère jamais. Comment puis-je accélérer le jeu, même ses quelques points de plus? Je veux dire de 50 à 100 une accélération et de 100 à 150 et ainsi de suite. Voici mon code jusqu'à présent:Accélérer le jeu après tous les 50 points

if (points % 10 == 0) { 

    if (readyToSpeed) { 

     speed++; 
     NSLog(@"speed up"); 
     readyToSpeed = NO; 
    } 
} 

Merci pour l'aide! (code dans objectif-c s'il vous plaît)

EDIT: Fonctionne parfaitement en utilisant les deux réponses combinées.

Répondre

3

Au lieu de incrémenter votre vitesse, vous pouvez le faire comme ceci:

speed = baseSpeed + (points/50); 

Où baseSpeed ​​est la vitesse au début du jeu.

+0

comment puis-je définir une limitation à cela? – ccdev

+1

juste faire une condition par la suite, si la vitesse> maxSpeed, speed = maxSpeed ​​ – Knight0fDragon

+0

Maintenant, il fonctionne comme un charme – ccdev

3

Ne vous inquiétez pas les 50x exacts de multiples points, garder une trace du point courant « groupe » via modulo pour calculer la valeur de votre vitesse

cur_speed = points - (points % 50); 

par exemple si elles sont à 203 points, alors cur_speed est 203- (203% 50) -> 203-3 -> 200. Si elles sautent soudainement à 308 pts parce qu'elles frappent un combo de points fous, alors la vitesse devient 308- (308 % 50) -> 308-8 -> 300

+0

qui semble bon, mais où et comment puis-je mettre en œuvre cela? Parce que je ne sais pas comment faire l'instruction if. – ccdev

+0

Où et quand vous avez besoin de mettre à jour la vitesse, je suppose. Si leur vitesse dépend totalement de leur score, alors vous calculez le groupe dans lequel ils se trouvent et utilisez-le pour mettre à jour la vitesse. Soit comme @PaulDaPigeon a fait ci-dessous (vitesse de base + incrément total), ou de garder un compte courant avec la vitesse actuelle = vitesse précédente + changement de groupe de points. –

0

si vous voulez juste entre 50-100 et 100-150 faire quelque chose comme ceci:

If points > 50 && points < 100 { 
//speedup code 
}else if points > 100 && points < 150 { 
//speedup code 
} //etc 

Mise à jour: si vous voulez que ce soit sans fin le faire :

var speednumber = points/50 
speednumber = speednumber-decimal //some code to cut of the decimals 
setSpeedTo(speednumber+1) //you got to make a function for this 

setSpeedTo (1) est normale
2 sera de 50 à 100
3 100-150
Etc.