2011-02-12 2 views
0

Я использую cocos2d и нуждаюсь в помощи в реализации метода. Я бы хотел, чтобы вражеский персонаж оставался бездействующим, пока он не достигнет определенного количества пикселей от героя. Как мне это сделать? Неактивен, я хочу, чтобы он остановил все методы и в основном приостановил все действия, пока он не скажет 300 пикселей от героя. Я думал об этом с помощью метода if, но вам просто нужна помощь.Enemy Inactive До x пикселей от Hero

Очевидно, что это не сработает, но это пример того, что я хотел бы сделать.

-(void)enemyInactive:(id)sender { 
if (enemy.position > ccp(600, 0)) { //if farther than 600 px away from Hero (many faults) 
    //stop all enemy actions 
} else if (mole.position < ccp(599, 0)) { //if less than 600 px away from Hero 
    //resume all enemy actions 
} 

}

ответ

0

Я считаю, что вы до сих пор помню теорему Пифагора .. А (кв.м) + B (кв.м) = C (кв);

так в коде будет ..

-(void)tick:(ccTime)delay 
{ 
float x = enemy.position.x - hero.position.x; 
float y = enemy.position.y - hero.position.y; 
float xy = x*x + y*y; 
if(xy<360000) 
{ 
//resume actions.. 
} 
else 
{ 
//stop all 
} 
} 

Я рекомендую называть это за тик или что-то .. 360000 квадратный 600 .. Обратите внимание, что я не использую квадратный корень, как он будет потреблять некоторую обработку когда эта функция вызывается за отметку.

+0

Спасибо, но я не уверен, что получаю вашу теорию на квадрат (корень). Почему там 360000? Разве я не могу сказать 600? Я не понимаю, где здесь играют квадратные корни – Joethemonkey101

+0

Спасибо, что ответили на все мои вопросы! – Joethemonkey101