让机器人朝靠近英雄的地方走
2014-07-28 11:51
155 查看
void GameLayer::updateRobots(float dt) { int alive=0; //当前活着的机器人的数量 int distanceSQ; int randomChoice=0; CCObject* pObject=NULL; CCARRAY_FOREACH(this->_robots,pObject){ Robot* robot=(Robot*)pObject; if(robot->_actionState != kActionDead){ alive++; if(::GetCurTime()>robot->_nextDecisionTime){ distanceSQ=ccpDistanceSQ(robot->getPosition(),this->_hero->getPosition()); if(distanceSQ<=50*50){ robot->_nextDecisionTime=::GetCurTime()+frandom_range(0.1,0.5)*1000; randomChoice=random_range(0,1); if(randomChoice==0){ //机器人执行攻击动作 if(this->_hero->getPositionX()>robot->getPositionX()){ robot->setScaleX(1.0f); }else{ robot->setScaleX(-1.0f); } robot->_nextDecisionTime=robot->_nextDecisionTime+frandom_range(0.1,0.5)*2000; robot->attack(); //检测机器人是否攻击到英雄 if(fabsf(this->_hero->getPositionY()-robot->getPositionY())<10){ if(_hero->_hitBox.actual.intersectsRect(robot->_attackBox.actual)){ _hero->hurtWithDamage(robot->_damage); if(_hero->_actionState==kActionDead && (((GameScene*)(this->getParent()))->_hudLayer->getActionByTag(537)==NULL)){ this->endGame(); } } } }else{ //执行空闲动作 robot->idle(); } }else if(distanceSQ <= CCDirector::sharedDirector()->getWinSize().width*CCDirector::sharedDirector()->getWinSize().width){ robot->_nextDecisionTime=::GetCurTime()+frandom_range(0.5,1.0)*1000; randomChoice=random_range(0,2); if(randomChoice==0){ //机器人执行行走动作 CCPoint moveDirection=ccpNormalize(ccpSub(_hero->getPosition(),robot->getPosition())); //求标准化向量 robot->walkWithDirection(moveDirection); robot->updateDesiredPosition(dt*20); //robot->setPosition(robot->_desiredPosition); }else{ //执行空闲动作 robot->idle(); } } } } } if(alive==0 && ((GameScene*)(this->getParent()))->_hudLayer->getChildByTag(537)==NULL){ this->endGame(); } }
相关文章推荐
- Java Robot 编写脚本机器人(四)英雄联盟扭曲丛林脚本
- 我想找个给英雄下跪的地方
- 李敖-我想找个给英雄下跪的地方!
- 我想找个给英雄下跪的地方
- AI伦理学教授:机器人也要讲道德 人类有意识是偶然 | AI英雄
- 我想找个给英雄下跪的地方
- 我想找个给英雄下跪的地方
- [随笔]“我想找个给英雄下跪的地方”(作者:李敖)(附评论二)
- 我想找个给英雄下跪的地方
- Contractor Anywhere (任何地方的承包商)也被 SAGE “赛捷”公司收购 !
- Android开发之Handler需要注意的地方
- 文件流操作--将一个文件复制到另外一个地方
- AI一分钟 | Yann LeCun怒批机器人Sophia:招摇撞骗;李嘉诚:我比较保守,只投了1亿港币到比特币终端市场
- 我们去的地方一定会有屎
- GM联合NASA的产物-机器人宇航员R2
- 对while((pid = waitpid(-1, &stat, WNOHANG)) > 0)不懂的地方,现在懂了
- AndroidStudio 工程目录菜单栏等其他地方汉语变成方块解决办法
- 打油诗一首 英雄之笑看风云
- 华盛顿邮报启用核查事实机器人,新闻行业路指何方
- 大端字节(big-endian)和小端字节(little-endian):到底哪些地方要注意字节顺序