Враг не активен До x пикселей от Героя - PullRequest
0 голосов
/ 12 февраля 2011

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

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

-(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
}

}

1 Ответ

0 голосов
/ 12 февраля 2011

Полагаю, вы все еще помните теорему Пифагора .. A (sq) + B (sq) = C (sq);

, поэтому в коде будет ..

-(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. Обратите внимание, что я не использую квадратный корень, поскольку он потребляет некоторую вычислительную мощность, когда эта функция вызывается за тик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...