Я пытаюсь реализовать систему live / Score, используя cocos2d и box2d. мои тела - это box2d тела, которые сталкиваются так, как я хочу, но проблема в том, что я пытался реализовать систему оценок, в которой при каждом столкновении жизнь удаляется или уменьшается по сравнению с оставшимися жизнями и после определенного числа столкновений (скажем, 3 ) игра должна остановиться. В этом случае это не так, но из CCLOG я узнаю, что на самом деле он печатает сообщение, которое я помещаю для отображения при вызове игрового менеджера, но странно то, что он вызывает его навсегда (см. Также окно отладки ниже) при запуске приложения он полностью удаляет объект «человек» со сцены.
У меня есть класс gameManager (singleton), в котором в файле .h я объявил
@interface GameManager : NSObject {
int lives;
}
-(void)removeLives : (int)val;
и в файле gameManager.m у меня есть этот метод
-(void)removeLives : (int)val
{
lives -=val;
CCLOG(@"YOU HAVE LOST A LIFE MAN");
}
В моем основном файле gameLayer.mm в методе обновления у меня есть этот код
if(kStateColliding){
if (lives > 0) {
man.visible = TRUE;
} else if (lives <= 0) {
[man stopAllActions];
man.visible = FALSE;
[[GameManager sharedGameManager] removeLives:1];
}
}
и жизнь инициализируется в методе init gameManager, таким образом
-(id)init { // 8
self = [super init];
if (self != nil) {
// Game Manager initialized
CCLOG(@"Game Manager Singleton, init");
lives = 3;
}
Это снимок экрана консоли отладки
Также обратите внимание, что у меня есть класс "Man", который является классом Box2d.
Я правильно делаю? Пожалуйста, кто-нибудь может мне помочь с тем, как идти о внедрении этой системы и где и как сделать соответствующие звонки.