宠物AI(个人觉得有问题)
//宠物AI流程
.刚开始添加宠物
Monster被动State:EnumMonster被NULL
MonsterStat:EnumPet跟随
.附近有怪物就改成攻击模式(相关的收尾工作)
void PetObj::cancle_follow()
{
m_trace_line.clear();
is_move = false;
MonsterStat = EnumMonsterStat::EnumMonster追击;//将怪物的状态改成EnumMonster追击
}
//如果线路没有走完他会向客户端发送移动包和附近玩家通知包
.当把怪度打死并且目标列表中为空时就把气状态置为跟随
void PetObj::cancle_attached()
{
m_is_attached = false;//玩家已死,取消攻击记录
m_attach_objs.clear();//取消攻击记录
m_trace_line.clear();
is_move = false;
MonsterStat = EnumMonsterStat::EnumPet跟随;
}
.如果宠物在追击或者跟随的过程中和主人的距离超过20格子则会传送
void PetObj::传送()//这个函数写的有问题
{
MonsterStat = EnumMonsterStat::EnumPet跟随;//将状态置为跟随,传送之后其状态回到原始状态就是跟随 auto owner_map_pos = m_map->m_spBase->getMapPos(owner->tgtPos);
int mx = owner_map_pos.x;
int my = owner_map_pos.y; pos2d mPos = {mx, my};
int dir = ;
for(dir = ; dir < ; dir ++)
{
switch(dir)
{
case DIR_UP:
case DIR_LEFT:
case DIR_LEFTUP:
mPos.y++;
break;
case DIR_RIGHTUP:
mPos.x++;
break;
case DIR_RIGHT:
case DIR_RIGHTDOWN:
mPos.y--;
break;
case DIR_DOWN:
case DIR_LEFTDOWN:
mPos.x--;
break;
}
if(m_map->is_out_of_range(mPos.x, mPos.y) || !is_pet_stand(mPos))
continue;
if(m_map->m_vec_collsion[mPos.x][mPos.y] != )
break;
}
if(dir >= )
{
return;
} //给附近玩家 和 角色发送消息信息
for(auto it : map_nearby_player)
{
it.second->nearby_monsters.erase(objId.id);
std::vector<ObjecInfo> 远离的;
远离的.push_back(*this);
it.second->send_obj_leave(远离的);
}
for(auto it : map_nearby_objs)
{
it.second->map_nearby_objs.erase(objId.id);
}
//m_map->m_move_objs.erase(objId.id);//移除对象
m_map->m_move_mgr.del_mask(objId); pos2d bpos = _getBlockPos();
m_map->m_map_blocks[bpos.x][bpos.y].del(objId); map_nearby_objs.clear();
map_nearby_player.clear(); curPos = tgtPos = m_map->m_spBase->getPos(mx, my); auto cur_block_pos = m_map->m_spBase->getBlockPos(curPos);
block_x = cur_block_pos.x;
block_y = cur_block_pos.y; base_mpos.x = mx;
base_mpos.y = my; //加载到Map::的blockobj容器中
m_map->m_vec_collsion[mx][my] = ;//当前点设置为1 //加入到容器中
m_map->m_map_objs[objId.id] = this;
m_map->m_map_blocks[block_x][block_y].add(this);
init();
return;
}
宠物AI(个人觉得有问题)的更多相关文章
- Lua Behavior Tree For Unity3D(Lua描述行为树For Unity3D)
行为树(BTTree)笔记 为什么是Lua版本的行为树 目前国内的手机游戏都标配热更新功能,而游戏AI自然也是MMO游戏的一个标配,比如说挂机的AI,宠物的AI等等. 说起如何用更简单的方式开发AI功 ...
- MMORPG战斗系统随笔(三)、AI系统简介
在设计一款游戏的时候,如果我们是玩家,是希望自己能够操作角色畅玩游戏的.在一款MMORPG游戏中,大部分的实际游戏角色,是需要玩家来操作的,通过在游戏大世界相互完成游戏中的任务等等来体验游戏.在大世界 ...
- AI产品经理成长路
AI产品经理成长路 https://www.jianshu.com/p/4b98314ad3c0 以下都是自己平时知识的一些总结,只是一些个人的愚见,下面出现的公司.书籍.视频.网站都是自己看过体验过 ...
- AI超越人类大脑,或许是场“别有用心者”的骗局
谷歌.微软.苹果.特斯拉.百度.腾讯.阿里等互联网巨头企业,以及纳德拉.马斯克.扎克伯格.马云等互联网大佬,近年来一直都对人工智能--AI非常上心.在众多场合对AI给予了或肯定,或恐惧的评价.但无 ...
- Fetch.AI 首席技术官Toby Simpson参与AMA活动
感谢7月11日在YouTube上参与 Fetch.AI AMA的所有人.我们收到了大量的问题,遗憾的是我们没有时间回答其中的多数问题.如果你错过了现场AMA,你可以在下面观看全部内容: 在本文中,我们 ...
- 马里奥AI实现方式探索 ——神经网络+增强学习
[TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...
- 普通程序员如何转向AI方向
眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 游戏AI系列内容 咋样才能做个有意思的AI呢
游戏AI系列内容 咋样才能做个有意思的AI呢 写在前面的话 怪物AI怎么才能做的比较有意思.其实这个命题有点大,我作为一个仅仅进入游戏行业两年接触怪物AI还不到一年的程序员来说,来谈这个话题,我想我是 ...
随机推荐
- PHP计算某个目录大小的方法
用PHP来计算某个目录大小的方法. PHP CURL session COOKIE 可以调用系统命令,还可以这样: <?php function dirsize($dir) { @$dh ...
- Nginx Location配置语法介绍、优先级说明
nginx 语法规则:location [=|~|~*|^~|!~|!~*] /uri/ { … } location匹配的是$document_uri,$document_uri 会随 ...
- Java数字处理
给出一个不多于5位的正整数,要求如下: (1)求出该数是几位数. (2)分别打印出每一位数字. (3)按照逆序打印出各位数值. 按照以上要求,首先得用户从键盘输入一个不多于5位的正整数,可以用Syst ...
- 大话RAC介质恢复---联机日志损坏
对联机日志的损坏要根据日志状态进行分析,联机日志一般会有Current.Active和Inactive三种状态.Inactive状态不会造成数据丢失.而Active和Current状态的日志一般会造成 ...
- 如何解决android studio 运行时中文乱码的问题
相信很多朋友都会遇到android studio 在MAC OS中运行的时候中文乱码.而在代码编辑的时候正常.经过几天的不断寻找解决办法,终于解决了 比如: Toast.makeText(MainAc ...
- wpf做的可扩展记事本
记得有个winform利用反射做的可扩展笔记本,闲来无事,便用wpf也搞了个可扩展记事本,可用接口动态扩展功能,较简单,以便参考: 目录结构如下: MainWindow.xaml为主功能界面,Func ...
- 11G ORACLE RAC DBCA 无法识别asm磁盘组
ASM磁盘无法识别几种现象: 1) gi家目录或者其子目录权限错误 2)asm磁盘的权限错误 3)asm实例未启动或者asm磁盘组没有mount上 4)asm磁盘组资源没有在线 5)oracle用户的 ...
- Oracle 12c 数据库中scott用户不存在的解决方法
-- 使用超级管理员登录CONN sys/change_on_install AS SYSDBA ;-- 创建c##scott用户CREATE USER c##scott IDENTIFIED BY ...
- 解压vmlinuz和解压initrd(initramfs)
有时就算只得到一个Linux kernel的rpm包或者直接是编译后的vmlinuz和initrd的binary文件,也需要了解其中的一些细节,可能需要去查找这些binary有没有将我想要的patch ...
- centos6 自启动任务
tag: init upstart centos6.x 自启动 initctl event CentOS6开始转用Upstart代替以往的init.d/rcX.d的线性启动方式.upstart的概念就 ...