使用Unity和A*插件实现LoL英雄联盟中的移动方式

LoL中的移动方式是怎么样的呢?我分析一下应该是这样的:

右键单击选择目标点,角色会向着目标点走去,而去目标点的路上如果点击了其它目标点就更新目标点,如果中间有障碍会自动选择最近的路径,如果目标点不可抵达就向目标点最近的可抵达目标点移动。到达了目标点角色就停下。

英雄联盟中角色与正常的人的移动是不一样的,它是匀速的,这是为了提高玩家对其的操作掌控感,所以移动时不能使用插值的方式去移动物体,不能使用加速度,需要直接设置速度,只要点击角色会马上转向,立刻反向并速度不变,这样有突兀的变化不符合力学,但是玩家的操作反馈会很好。

Unity射线通过Camera.main.ScreenPointToRay(Vector2)方法 传入鼠标位置参数返回射线类Ray

Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);

射线从相机向鼠标位置方向发射线使用物理方法Physics.Raycast(Ray ray,out RaycastHit hit,float maxDistance),返回变量指示射线是否与物体发生碰撞,若月碰撞通过hit.point即可获得鼠标点击的物体上的点的世界坐标

RaycastHit hit;
bool isHit=Physics.Raycast(ray,out hit,1000);

这种Physics的代码应该放在FixedUpdate中,如果发现有的点击没有被响应,说明检测的频率不够,可以在ProjectSetting->Time中设置Fixed Timeste

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值