开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:1963

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 289|回复: 19

[杨显峰讲师] Navmeshagent与飞行

[复制链接]  [移动端链接]
排名
7185
昨日变化
81

10

主题

51

帖子

332

积分

Rank: 9Rank: 9Rank: 9

UID
92284
好友
1
蛮牛币
1281
威望
0
注册时间
2015-4-15
在线时间
121 小时
最后登录
2017-11-19
发表于 6 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
先看看效果图:
1.gif

一个是飞行的兵种,一个是步兵,同时向鼠标的点击点出发。
Navmesh实现步兵的寻路不是难事,在此略过不表,关键是飞行的兵种怎么实现。在这里先说说原理:
飞行的兵种不使用Navmesh功能,是直接移动到目的点。关键要解决的是如何保持兵种的飞行高度。这个解决的办法是从兵的点向下发一个射线,然后碰到物体,改变兵种的高度和碰到的物体一定的距离,这样就可以实现保持兵种的飞行高度。在上下的过程中,还可以用插值来让过程更加的连贯。
下面是兵种的控制代码:
[C#] 纯文本查看 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public enum MoveType
{
    Walk,
    Fly
}

public class Player : MonoBehaviour {

    public MoveType _MoveType;
    public float _Height;


    private NavMeshAgent agent;
    private Vector3 desPos;
    private bool flyBool = false;


    void Start () {
        agent = transform.GetComponent<NavMeshAgent>();
        if (_MoveType == MoveType.Fly) agent.enabled = false;
    }
	

	void Update () {
        if (Input.GetMouseButtonDown(0))
        {
            Move();
        }

        if (_MoveType == MoveType.Fly)
        {
            RaycastHit hit;
            if (Physics.Raycast(transform.position, -transform.up, out hit))
            {
                transform.position = new Vector3(transform.position.x, hit.point.y + _Height, transform.position.z);

            }
            if (flyBool)
            {
                transform.position = Vector3.MoveTowards(transform.position, desPos, Time.deltaTime *5);
                if (Vector3.Distance(transform.position, desPos) < _Height + 0.1f)
                {
                    flyBool = false;
                }
            }

        }


    }

    void Move()
    {

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//在鼠标所在的屏幕位置发出一条射线
        RaycastHit hit;
        if (Physics.Raycast(ray.origin, ray.direction, out hit))
        {

            if (hit.collider.gameObject.tag == "Terrain")
            {//设置地形Tag为Terrain  
                switch (_MoveType)
                {
                    case MoveType.Walk:
                        agent.SetDestination(hit.point);
                        break;
                    case MoveType.Fly:
                        desPos = hit.point;
                        flyBool = true;
                        break;
                }
                      
                   
            }


        }
    }
}



具体的视频教学在:http://edu.manew.com/course/397

回复

使用道具 举报

6蛮牛粉丝
1171/1500
排名
6764
昨日变化
72

2

主题

855

帖子

1171

积分

Rank: 6Rank: 6Rank: 6

UID
241666
好友
0
蛮牛币
4559
威望
0
注册时间
2017-9-6
在线时间
164 小时
最后登录
2017-11-20
发表于 5 天前 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

4四处流浪
331/500
排名
13187
昨日变化
263

2

主题

228

帖子

331

积分

Rank: 4

UID
247659
好友
0
蛮牛币
1077
威望
0
注册时间
2017-10-9
在线时间
53 小时
最后登录
2017-11-20
发表于 5 天前 来自Mobile--- | 显示全部楼层
谢谢分享!!

回复

使用道具 举报

5熟悉之中
891/1000
排名
5644
昨日变化

6

主题

449

帖子

891

积分

Rank: 5Rank: 5

UID
183904
好友
3
蛮牛币
1827
威望
0
注册时间
2016-11-15
在线时间
246 小时
最后登录
2017-11-17
QQ
发表于 5 天前 | 显示全部楼层
想法很给力

回复

使用道具 举报

排名
12929
昨日变化
6

0

主题

2

帖子

63

积分

Rank: 2Rank: 2

UID
239211
好友
0
蛮牛币
359
威望
0
注册时间
2017-8-23
在线时间
15 小时
最后登录
2017-11-16
发表于 5 天前 | 显示全部楼层
牛逼 哈哈哈哈哈哈哈哈哈哈

回复 支持 反对

使用道具 举报

5熟悉之中
914/1000
排名
3118
昨日变化
3

3

主题

253

帖子

914

积分

Rank: 5Rank: 5

UID
159631
好友
1
蛮牛币
1473
威望
0
注册时间
2016-7-30
在线时间
286 小时
最后登录
2017-11-17
发表于 5 天前 | 显示全部楼层
谢谢分享

回复

使用道具 举报

4四处流浪
337/500
排名
6690
昨日变化
1

0

主题

117

帖子

337

积分

Rank: 4

UID
185339
好友
0
蛮牛币
390
威望
0
注册时间
2016-11-20
在线时间
70 小时
最后登录
2017-11-17
发表于 5 天前 | 显示全部楼层
感谢分享

回复

使用道具 举报

5熟悉之中
587/1000
排名
5774
昨日变化
1

6

主题

269

帖子

587

积分

Rank: 5Rank: 5

UID
214924
好友
1
蛮牛币
1146
威望
0
注册时间
2017-3-28
在线时间
126 小时
最后登录
2017-11-18
发表于 5 天前 | 显示全部楼层
差值才是关键。

回复

使用道具 举报

3偶尔光临
187/300
排名
10073
昨日变化
136

0

主题

70

帖子

187

积分

Rank: 3Rank: 3Rank: 3

UID
229748
好友
0
蛮牛币
230
威望
0
注册时间
2017-7-1
在线时间
41 小时
最后登录
2017-11-19
发表于 5 天前 | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
2636/5000
排名
5558
昨日变化
3

4

主题

2186

帖子

2636

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
209186
好友
4
蛮牛币
3155
威望
0
注册时间
2017-3-1
在线时间
252 小时
最后登录
2017-11-17
发表于 5 天前 | 显示全部楼层
谢谢分享

回复

使用道具 举报

5熟悉之中
829/1000
排名
2746
昨日变化
1

0

主题

255

帖子

829

积分

Rank: 5Rank: 5

UID
179635
好友
1
蛮牛币
1131
威望
0
注册时间
2016-10-31
在线时间
156 小时
最后登录
2017-11-18
发表于 5 天前 | 显示全部楼层
感谢分享

回复

使用道具 举报

3偶尔光临
189/300
排名
10359
昨日变化
177

0

主题

54

帖子

189

积分

Rank: 3Rank: 3Rank: 3

UID
228538
好友
2
蛮牛币
194
威望
0
注册时间
2017-6-24
在线时间
63 小时
最后登录
2017-11-19
发表于 5 天前 | 显示全部楼层
感谢分享

回复

使用道具 举报

5熟悉之中
720/1000
排名
2902
昨日变化
1

0

主题

82

帖子

720

积分

Rank: 5Rank: 5

UID
146162
好友
0
蛮牛币
1110
威望
0
注册时间
2016-4-20
在线时间
238 小时
最后登录
2017-11-17
发表于 5 天前 | 显示全部楼层
不错不错

回复

使用道具 举报

7日久生情
2016/5000
排名
653
昨日变化

1

主题

257

帖子

2016

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
27816
好友
3
蛮牛币
6277
威望
0
注册时间
2014-6-3
在线时间
648 小时
最后登录
2017-11-18
发表于 5 天前 | 显示全部楼层
感谢分享

回复

使用道具 举报

4四处流浪
422/500
排名
6841
昨日变化
5

3

主题

205

帖子

422

积分

Rank: 4

UID
234982
好友
0
蛮牛币
838
威望
0
注册时间
2017-7-30
在线时间
76 小时
最后登录
2017-11-15
发表于 5 天前 | 显示全部楼层
dddddddddddddddddddddddddd

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表