自动寻径
现在的大部分mmo游戏都有了自动寻路功能。点击场景上的一个位置,角色就会自动寻路过去。中间可能会有很多的障碍物,角色会自动绕过障碍物,最终达到终点。使用Unity来开发手游,自动寻路可以有很多种实现方式。
MO - Massively Multiplayer Online:大型多人在线
策略类或战略类(MMOSLG)
动作类(MMOACT)
冒险类(MMOAVG)
模拟类游戏(MMOSG)
运动类(MMOSPT)
赛车类(MMORCG)
角色扮演类(MMORPG)
A巨魔自动寻径
1.创建地形
2.添加角色
3.创建多个障碍物,尽量摆的复杂一点,来检查Navmesh
的可用性和效率。
4.选中地形,在Navigation窗口中,设置Navigation Static
5.依次选中障碍物,在avigation窗口中,设置Navigation Static
6.Navigation窗口中,选择Bake(烘焙)界面,点击Bake按钮,进程场景烘焙,就可以烘焙出寻路网格了
7.为角色添加NavMeshAgent组件。Component->Navigation->Nav Mesh Agent
8.为角色新增一个脚本PlayerController.cs,实现点击目标,自动寻路功能
using UnityEngine;
using System.Collections;
public class Role1 : MonoBehaviour {
private NavMeshAgent agent;
private Animator anim;
void Start() {
agent = GetComponent<NavMeshAgent>();
anim = GetComponent<Animator>();
}
void Update() {
RaycastHit hit;
if (Input.GetMouseButtonDown(0)) {
Ray ray =
Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit)){
agent.SetDestination(hit.point);
}
}
if (agent.remainingDistance == 0)
{
AnimationToIdle();
}
else
{
AnimationToWalk();
}
}
public void AnimationToIdle()
{
anim.SetFloat("idle", 1F);
anim.SetFloat("walk", 0.0F);
anim.SetFloat("run", 0F);
}
public void AnimationToWalk()
{
anim.SetFloat("run", 0.0F);
anim.SetFloat("idle", 0F);
anim.SetFloat("walk", 1.0F);
}
}
Acceleration 加速度: 最大加速度。
Angular Speed 角速度: 最高转速(度/秒)。
Stopping distance 制动距离:制动距离。到目的地的距离小于这个值,代理减速。
Auto Traverse OffMesh Link 自动遍历OffMesh链接:自动移动并关闭OffMeshLinks
Auto Repath 自动重新寻路:如果现有的部分已失效,获得新的路径
Height 高度:代理的高度(用于调试图形)。
Base offset 基本偏移:碰撞几何体相对于实际几何体垂直的偏移。
Obstacle Avoidance Type 障碍躲避类型 :躲避的质量水平。
NavMesh Walkable 导航网格行走:指定代理可以遍历的导航网格层类型。



769

被折叠的 条评论
为什么被折叠?



