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