Enemy Inactive直到x像素远离英雄

时间:2011-02-12 01:00:12

标签: iphone cocos2d-iphone

我正在使用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 :(得分:0)

我相信你还记得毕达哥拉斯定理.. 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的平方..请注意,我没有使用平方根,因为当每个刻度调用此函数时它将消耗一些处理能力..