2011-02-12 35 views
0

我正在使用cocos2d并需要帮助实施一种方法。我希望有一个敌人角色保持不活动,直到他离开英雄角色有一定数量的像素。我将如何做到这一点?通过不活动,我希望他停止所有的方法,基本上暂停所有的动作,直到他离开英雄角色300像素。我想过通过if方法来做这件事,但只需要一些帮助。敌人直到距离英雄x个像素为止

显然,这是行不通的,但这是我想要做的一个例子。

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

相信你还记得毕达哥拉斯定理.. 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平方..请注意,我没有使用平方根,因为它会消耗一些处理当这个功能被称为每个tick ..

+0

谢谢,但我不知道我得到你的理论在平方(根)。那里为什么是360000?我不能说600吗?我不明白平方根在哪里发挥作用 – Joethemonkey101 2011-02-12 17:40:35