自动寻径
来源:互联网 发布:windows snmp dhcp 编辑:程序博客网 时间:2024/06/09 23:41
欢迎来到U3D社区:
现在的大部分MMO游戏都有了自动寻路功能。点击场景上的一个位置,角色就会自动寻路。中间可能会有喝多的障碍物,角色会自动绕过障碍物,最终到达终点。使用Unitu来开发手游,自动寻路可以有喝多的实现方式。
我们要实现一个功能:鼠标点击场景中的一个位置,角色自动寻路过去 角色会绕过各种复杂的障碍物,找到一个理论上的最短路径
首先 我们需要先创建一个地形后 摆多个障碍物 , 在选中地形 Navigation-->Navigation Static 所有的障碍物都需要添加Navigation Static
然后在Navigation窗口中选择Bake 就可以 看到那些地方可以通过 那些地方不可以通过。
然后创建一个人物模型 给人物添加一个NavMeshAgent组件。
然后给角色添加脚本。:
人物脚本中主要应用了射线的原理 :
我们需要首先定义一个人物 :
private NavMeshAgent agent;
private Animator anim;
接下来需要添加组件
void Start()
{
agent=GetComponent<NavMeshAgent>();
anim= GetComponent<Animator>();
}
RaycastHit hit;//射线命中点为人物
if(Input.GetMouseButtonDown(0))
{
Ray ray=Camera.main.ScreenPointToRay(Input.mouse.position); //射线只想鼠标所点击的位置
if(Physice.Raycast(ray.out hit))
{
agent.SetDestination(hit.point);
}
}
将这段代码给了 人物 人物便可以自动移动到鼠标所点击的位置
让人物有走路和跑步的效果:
需要用到判断语句:
if(agent.remainingDistance==0)//人物剩余的距离为0时
{
AnimatorToIdle();//人物停顿
}
else
{
AnimtorToWalk();//人物走路
}
public void AnimatorToIdle()
{
anim.SetFloat("idle",1f);
anim.SetFloat("wale",0.0f);
anim.SetFloat("run",0.0f);
}
public void AnimatorToWalk()
{
anim.SetFloat("idle",0.0f);
anim.SetFolat("run",0.0f);
anim.SetFloat("walk",1.0f);
}
将代码给人物时便可以行走
宠物跟随: 游戏中基本都有宠物
需要建立一个宠物 给宠物添加NabMeshAgent组件
给宠物写代码:
public Transform.target;//定义要跟随的人物
private NavMeshAgent agent;
void Start()
{
agent=GetComponent<NavMeshAgent>();
}
void Update()
{
if (target!=null)
{
agent.destination=taeget.position;
}
我们还可以做一个障碍物 在障碍物上添加 NAVMeshOstacle 人物便过不去了
设置有写高出可以跳下 选中要挑的位置后 点击Navigation里边Bake的 Drop Height 填写的值要大于 所在的高度
勾选 NavMeshOstacle 的 Object 的OffMeshLink Generatic/
更多精彩在http://unity.gopedu.com/forum.php
0 0
- 自动寻径
- Unity--自动寻径
- 自动寻径
- Unity3D 自动寻径
- 自动寻径
- 自动寻径
- 自动寻径
- 自动寻径
- Unity之自动寻径
- Unity之自动寻径
- unity之自动寻径
- unity之自动寻径
- unity学习之自动寻径
- Unity3D学习之(自动寻径)
- Unity学习之自动寻径
- Unity学习之自动寻径进阶
- 学习Unity3D之自动寻径。
- unity代码笔记<3>自动寻径
- 2014下半年软考总结
- OpenCV 立体视觉详细解析(一)---摄像头标定
- 员工管理系统-2-12-31-2014
- dom4j解析xml和写入xml文件
- 该如何选择 background-image 和 img 标签
- 自动寻径
- 【POJ1743】Musical Themes 乐曲主题 后缀数组、 (也可以用hash+二分做的~)
- 快速选择算法
- 你能描述一下渐进增强和优雅降级之间的不同吗?如果提到了特性检测,可以加分。
- python自学第一课:python的安装
- 第五届蓝桥杯之神奇算式
- unity之自动寻径
- 详解css相对定位和绝对定位
- 详解JavaScript模块化开发