MMO碰撞检测,战斗,地图行走以及寻路问题

1. 碰撞检测

碰撞应该在服务端做,否则客户端就可以作弊了,但是服务端没有场景的几何信息,怎么做碰撞呢,方法是使用一张碰撞图,可以由美术生成,把接受碰撞的物体绘制成黑色,其他地方绘制成白色,对于边界和通道可以由美工在上面手动刷。

碰撞图生成之后,当客户端请求行走的时候,根据当前x, z位置和下一个x, z位置,可以计算出在碰撞图中的相应坐标,然后判断它们之间是否有黑色的像素,进而判断出是否会碰撞,然后给客户端作出响应。

2. 地图行走: 即如何保证人物行走时总是在地形的上方

保证人物在地形上方的方法是向-y方向投射一条射线,进而计算出人物当前位置的y坐标,然后更新人物的位置。这种计算最好在客户端做,因为服务器不能保存地形信息,但这样有一个问题,客户端可以提供假的y坐标,这样可能会造成问题,解决办法是,在服务端为每个地图保存一张y坐标图,它可以是不太精确的,用来防止客户端作弊。

对于那种可以掉下去的地图,可以在服务端模拟这种简单的物理,即给角色一个初速度,然后受重力作用。y坐标是逐步更新的。

3. 关于战斗

物理攻击: 当客户端请求物理攻击时,根据角色的位置和朝向判断与攻击目标的距离,若距离在攻击范围内,则允许攻击,服务端通知客户端播放攻击动画,当播放到某个点时【打到目标身上时】,通知服务端,服务端修改相应的状态,同步到客户端。

魔法攻击: 对于可穿墙的魔法,只需判断攻击者与目标的距离即可;不可穿墙的魔法,则需要使用碰撞图判断中间是否有障碍物,进而确定攻击是否有效。若有效,则通知客户端播放魔法动画,当技能打到目标身上时,通知服务端,服务端修改状态并同步到客户端。

4. 关于寻路

仅在服务端寻路:服务端根据碰撞图生成路线,然后更新位置同步到客户端。这种方式寻路有点耗!毕竟寻路也是一个经常用的功能,而且有那么多客户端,怕服务端吃不消。

服务端和客户端配合寻路:客户端生成路线,服务端监督客户端的移动,感觉这种方式比较好:)。

      《地下守护神》是暗黑魔幻风格的ARPG手游,是真正按照商业级技术水准研发的Unity大型教学案例。这是“刘老师讲Unity”课程体系中到目前为止最重量级教学课程,本课程将带领大家从手游前端各重要功能开发(基于MVC框架搭建、)到网络端的方方面面知识点,一一进行详细还原讲解,使得学员在短期内游戏研发能力有个质的突破,“主程”虚位以待,等待您的加入。 单机版主要技术点:    1: 前端分层的MVC架构设计,开发自定义的资源动态加载插件、音频插件、对话系统插件、事件监听插件、自定义强大的对象缓冲池脚本插件进行项目性能大幅提升等。    2: UI粒子特效、场景淡入淡出控制。    3: 单机与移动端的双输入控制系统开发。    4: 数值平衡处理与开发。    5: 多种设计模式在游戏研发过程中的灵活运用。    6: XML技术的灵活运用,在系统解耦与资源国际化方面的技术突破。    7: 开发强大灵活的日志系统插件,应对服务器与移动端的各种复杂系统调试需求。温馨提示:        本课程使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(推荐学员使用Unity5.2 版本减少开发过程中不必要的麻烦,VS使用更高版本则没有任何影响。) A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值