int length=0;
float index=0;
for (int i=0; i<Game::allEnemy.size(); i++) {
auto nowEmeny=Game::allEnemy.at(i);
if (length==0) {
length=this->getPosition().distance(nowEmeny->getPosition());
}else
{
if (this->getPosition().distance(nowEmeny->getPosition())<length) {
length=this->getPosition().distance(nowEmeny->getPosition());
index=i;
}
}
}
另外, Cocos2d-x 中规定顺时针方向为正,这显然与我们计算出的角度方向相反,所以转化的时候需要把角
rotateDuration表示旋转特定的角度需要的时间,计算它用弧度乘以速度
Vec2 rotateVector=Game::allEnemy.at(index)->getPosition()-this->getPosition();
float rotateRadians=rotateVector.getAngle();
float rotateDegrees=CC_RADIANS_TO_DEGREES(-1 *rotateRadians);
// this->ang=rotateDegrees;
float speed=0.5/M_PI;
float rotateDuration=fabs(rotateRadians *speed);
rotateArrow->runAction(Sequence::create(
RotateTo::create(rotateDuration, rotateDegrees),
CallFunc::create(CC_CALLBACK_0(TD::shoot, this)), NULL));
}
最后在创建游戏塔的同时定义一个计划函数:
newtd->schedule(schedule_selector(TD::roateAndShoot),0.5);