玩家移动

玩家移动
//好长时间没看这些,好多都看不懂了
void Map::UpdatePlayerPos(TgtPos pos, PlayerInfo* pl)
{
//    m_pLog->Logs(eLogLevel_Warning, "人物移动");
    // 检查位置包
    auto& mpos = m_spBase->GetMapPos(pos.tgtPos);
    if(!CheckMovePos(pos, pl))//纠正包不知干啥的
        return;

    pl->m_CurPos = pl->tgtPos;
    pl->tgtPos = pos.tgtPos;
    pl->m_fSpeed = pos.speed;
    pl->mov_face = pos.mov_face;
    pl->mov_mode = pos.mov_mode;
    pl->dir = pos.dir;

    int curPosX = pl->m_CurPos.x;
    int curPosY = pl->m_CurPos.y;
    int tgtPosX = pl->tgtPos.x;
    int tgtPosY = pl->tgtPos.y;

    //[+]设置阻挡(压测的时候取消设置)
    pos2d cur_map_pos = m_spBase->GetMapPos(curPosX, curPosY);
    pos2d tgt_map_pos = m_spBase->GetMapPos(tgtPosX, tgtPosY);

    int id = pl->objId.id;
    //标记移动
    m_MoveMgr.AddMask(pl);

    //没有发生位置移动
    if(cur_map_pos == tgt_map_pos)
        return;

    m_MapCellMgr.UpdateObjPos(pl, cur_map_pos, tgt_map_pos);

    //分配到指定的地图块上面(确定是否离开了所在块)
    int x = pl->m_nBlockX;
    int y = pl->m_nBlockY;

    //更新区域
    //pl->region = getRegion(tgt_map_pos);
    UpdateRegionInfo(pl, tgt_map_pos);

    pos2d new_block_pos = m_spBase->GetBlockPos(tgtPosX, tgtPosY);
    // 火墙移动处理
    FireWall(pl, pos.tgtPos);

    if((x == new_block_pos.x) && (y == new_block_pos.y))
        return ; //没变化

    //删除原来的
    ObjID plid;
    plid.id = id;
    plid.type = ObjID_Player;
    m_MapCellMgr.m_vecRolesBlock[x][y].Del(plid);

    //更新玩家附近的对象(其他玩家/怪)
    pos2d olDBlockPos = {x, y};
    NotifyBlock(olDBlockPos, new_block_pos, pl);
    //加入新的
    pl->m_nBlockX = new_block_pos.x;
    pl->m_nBlockY = new_block_pos.y;
    m_MapCellMgr.m_vecRolesBlock[new_block_pos.x][new_block_pos.y].Add(pl);
    //eSkillId_FireWall处理

}
时间: 2024-12-26 19:00:08

玩家移动的相关文章

【第二组】用例文档、功能说明书、技术说明书:显示和修改玩家信息 工作序号003 2017/7/11

一.用例 1. 标题: 显示和修改玩家信息 2. 角色: 玩家 3. 主要成功场景: (1)玩家在主界面,点击顶端左侧自己的头像,进入了玩家信息界面.玩家信息界面,看到了自己的头像.昵称.账号.等级.积分等信息.玩家点击了更换头像按钮,在弹出窗口点击了"选择图片"按钮,从电脑资源管理器中的一张图片进行了上传,点击了"确认选择"按钮,完成上传. (2)玩家点击了昵称旁边的"修改昵称"按钮,在弹出窗口中的文本框中输入新的昵称,右侧的检查昵称重复标志显

游戏UI设计要点——你抓住玩家的心了吗?

游戏美术行情在线        游戏UI设计的好坏决定了你和玩家之间的关系,到底是初次相遇的美好呢还是"山无棱天地合乃敢与君绝"?       那么要做一名具有出色"撩妹"技巧的UI设计师,就要抓住游戏UI设计的要点,这样才能抓住玩家的心嘛!今天就跟大家聊聊游戏UI的撩妹哦不设计要点. 话说"士为知己者死,女为悦己者容",那么如何才能成功地引起对方的注意呢?这就必须有个互动的过程啦,这个过程通俗点说的呢就是"撩妹".     

网游新规来袭,玩家还要为《阴阳师》费氪伤肝吗?

是否这一新规,会让阴阳师的火爆出现变数呢?欧洲人,非洲人的问题将变得不难么重要了呢? 文/张书乐 日前,文化部在其官网发布<关于规范网络游戏运营加强事中事后监管工作的通知>(以下称<通知>),其中规定,网络游戏运营企业应当在游戏的官方网站或者游戏内显著位置公布参与用户的随机抽取结果.目前,几乎所有的游戏都没有公布抽卡概率,包括近期最为火爆的<阴阳师>,该游戏ssr的获得概率一直是个谜.那么,新规的实行,是否会对<阴阳师>等爆款游戏产生影响? 对此,每日经济新

跟王老师学Java三大特性(四):案例 QuickHit:玩家玩游戏

案例 QuickHit:玩家玩游戏 主讲教师:王少华   QQ群号:483773664 学习目标 完成Player类中的play方法 一.需求说明 玩家玩游戏 二.思路分析 创建Game对象并传入player属性: 外层循环(循环次数是6,每循环一次玩家级别升一级) 晋级: 积分清零.计时清零: 内层循环(循环次数是该级别的strTime,每循环一次完成一次人机交互) 游戏输出字符串: 玩家输入字符串: 游戏判断玩家输入并输出相应结果. 三.参考代码 1 2 3 4 5 6 7 8 9 10 1

怪物,托管玩家的设计基本思路

1. 托管玩家, 怪物的行为AI由后台服务器负责控制和发起. a: AI行为采用行为树 b: 由于unity插件behavior designer不是开源, 数据格式也未知, 所以后台倾向于自己设计AI行为树, 由策划填表 2. 托管玩家,怪物的属性: a:  由后台统一同步. b: 位置信息完全由后台根据移动,战斗行为等等各种行为自己计算, 然后广播给玩家 c: 其他属性,比如血量,加速度,buff状态等, 由于攻击判定和结果由前端玩家计算, 故需要同步到服务器, 然后广播所有玩家. 3.  

PlayerLog.lua --玩家登录通告

1 print(">>Script: Player Log Message.") 2 local TEAM_ALLIANCE=0 3 local TEAM_HORDE=1 4 --CLASS 职业 5 local CLASS_WARRIOR = 1 --战士 6 local CLASS_PALADIN = 2 --圣骑士 7 local CLASS_HUNTER = 3 --猎人 8 local CLASS_ROGUE = 4 --盗贼 9 local CLASS_PRIE

LOL人工智能可区分百万种恶意言论 玩家骂人行为得到纠正(转)

相信不少玩家在<英雄联盟> 中都会遇到骂人或者被骂的玩家,尤其是一些低龄玩家更是口无遮拦,这些玩家通常会给其他玩家的游戏体验带来消极的影响.作为游戏的开发商Riot Games来说,对抗游戏中的恶意言论是一个巨大的挑战,因为在全球拥有如此数量庞大的玩家群体,每个国家地区的玩家使用的骂人方式也各不一样,如何区分 这么多的玩家言行是非常困难的. 被称为“小学生”类型的玩家 多年以来,Riot Games尝试了各种各样的技术,包括人工智能技术,对玩家的言行进行监控和引导,目前已经取得了相当不错的效果

人物上线(激活玩家之后)

人物上线block格子通知(相当重要了) 人物上线需要看到可视范围内玩家,npc,玩家,同时附近玩家也需要看到本玩家上线 对于进入地图 switch (eBlockChange) { case Map::eBlockChange_EnterMap: { m_MapBlockMgr.ProcessVisibleObjs(enterBlockPos, ProcessEnterObj);//此通知主要是玩家,NPC,怪物的通知 if(ObjID_Player == pObject->GetAttrOb

使用刀锋助手找回自信的游戏玩家

不管是任何游戏中有好与坏,强与弱.在现实中的世界更是如此,人吃人的世界如果想在这个世界生存必须让自己强大起来否则一辈子都会被人踩在脚底下. 那在游戏中就有很多堪称神一样的玩家,他们不仅令人高不可攀还带着可怕的威慑力在十里之外都能感觉到一股莫名的窒息感,那就是强者的气息,那股气息能山崩能地裂能以一挑十!你说什么以一挑十我没听错吧!你没听错以一挑十的恐怖力量.他们为什么能够这样逆天原因就在开了辅助第三方工具而我们弱小者只能秉足气息挨打的份,他们以超强而闪电般的速度和零血不死的绝对保护占据的SF界让弱

手游产品经理初探(八)CasinoStar玩家离开原因分析

通过Delta DNA分析报告,综合我们的游戏进行思考,我总结了几条玩家流失的经验: 1.在有限的前60秒我们没有花足够的精力去吸引玩家.就是说我们要花大量的经历在玩家进入游戏的60秒的体验上(我的澳门要吸取教训).通过Delta DNA对80款游戏的统计有30%的游戏在玩家进入游戏前60秒的表现逊色.在我们的游戏中,60秒内没有给玩家足够的震撼效果,更多的互动展示.在此时间段也不能保证玩家肯定能中Bonus,从而无法体验到Bonus的乐趣. 2.付费点的过早或太过明显占玩家流失原因的70%,从