Unity 显示AI导航路线

一、使用了以下几个小功能:

  1. 预制件,用来制作障碍物。
  2. 使用AI导航,制作导航网格。
  3. 加载Nav Mesh Agent组件使用导航算法。
  4. 鼠标点击射线。
  5. 将普通图片转换为sprite图片。点击图片在inspector中选择Texture Type->Sprite
  6. 通过计算每两个导航点之间的距离和角度,设置箭头的方向。

注意:
1.预制件的修改一定要对层次途图中的物对象点击apply.。
在这里插入图片描述
2.将障碍物和地形都设置为nav static。
3.制作箭头预制件,首先新建一个空的物体,将名字修改为方便识别的名字,然后在该空物体下再新建一个空物体,并添加sprite render组件。然后将sprite箭头图片拖入Sprite其中。记住如果添加进去的sprite图片的箭头方向要与Z轴保持一致,如果不一致,在子物体中调整。然后保存,拖入预制件中。
3.其实最开始是准备用linerender画箭头,但是后来发现linerender画的线不好看,用预制件画好看些。
4.还有就是人物不会一定严格按照画的线走,感觉有点动态走的样子。

代码:
(1)仅仅只有自动导航的代码,不包含使用预制件或者lineRender画路线。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;


public class UseNavAgent : MonoBehaviour {
   

    private Transform playerTF;
    private GameObject player;
    private NavMeshAgent aiNav;
    private Vector3 desPositon;
    private NavMeshPath navPath;
    // Use this for initialization
    void Start () {
   
        player = this.gameObject;
        //AnchorManager.Instance.Init(player);
        playerTF = GetComponent<Transform>();
        aiNav = playerTF.GetComponent<NavMeshAgent>();
        aiNav.speed = 0.5f;
        navPath = new NavMeshPath();

    }

    // Update is called once per frame
    void Update()
    {
   
        if (Input.GetMouseButtonDown(0))
        {
   
            //Debug.Log("pre_num :" + AnchorManager.Instance.GetChildrensNum().ToString() );
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
   
                aiNav.SetDestination(hit.point);
                aiNav.CalculatePath(hit.point, navPath);
            }
           
        }
    }
}

(2)使用linerender画出路线,同时使用在路线的关键点放置圆球。
这个需要两个文件,一个负责导航,一个负责画线和放置关键点圆球。
AnchorManager.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnchorManager : MonoBehaviour {
   

    // Use this for initialization
    private GameObject anchorPoint;
    private GameObject parentsObject;
    private LineRenderer lineRenderer;
    private static AnchorManager anchorPoints;
    public List<Transform> m_allPoints;
    public int SEGMENT_COUNT = 20;
    public static AnchorManager Instance
    {
   
        get
        {
   
            if (anchorPoints == null)
                anchorPoints = new AnchorManager();
            return anchorPoints;
        }


    }


    public int GetChildrensNum()
    {
   
        
        if(parentsObject == null)
        {
   
            Debug.Log("parent object null !");
            return 0;
        }
        //parentsObject.GetComponentsInChildren<Transform>().Length;
        Transform[] gameObjects = parentsObject.GetComponentsInChildren<Transform>();
        foreach (Transform gameObject in gameObjects)
        {
   
            if (gameObject.name == "ParentsObject")
            {
           
                continue;
            }
            Debug.Log("ObjectName = " + gameObject.name);
        }
        return gameObjects.Length - 1;

    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: UnityVR 箭头导航是一种虚拟现实应用技术,用于辅助用户在虚拟环境中进行导航。通过在虚拟场景中添加箭头,用户可以根据箭头指示的方向来进行行进。这种技术广泛应用于游戏、虚拟旅游和虚拟培训等领域。 UnityVR 箭头导航的优点是能够提供更好的用户体验和指示性,让用户更容易地在虚拟场景中进行探索。使用箭头导航还能减少用户的空间失序感和迷路的可能性,提高效率并提升游戏体验。 在技术上,UnityVR 箭头导航可以通过 Unity3D 引擎中的 Visualization Toolkit 实现。开发者可以在场景编辑器中添加导航箭头、调整尺寸、颜色和样式,并通过编码设置箭头的运动轨迹和相关动作。 总之,UnityVR 箭头导航是虚拟现实领域中的一个有用工具,用于解决虚拟环境中的定向和导航问题,让用户更好地享受 VR 体验。 ### 回答2: UnityVR箭头导航是一种在虚拟现实(VR)环境下使用的导航方式。它能够通过一个箭头来帮助用户在VR中找到目标位置,解决了用户在VR中进行移动时的迷失方向的问题。该导航方式是一种简单易懂的导航方式,能够让用户在虚拟环境中更加轻松地进行移动,并能够更流畅地进行交互。 UnityVR箭头导航的应用场景非常广泛,可以用于VR游戏、VR培训、VR交互设计等多个领域。尤其在VR游戏中,箭头导航能够有效地引导玩家完成任务目标,提供更好的游戏体验。此外,UnityVR箭头导航还可以与其他的交互方式相结合,如手部追踪、触摸板等,以进一步提高用户的交互体验。 总体来说,UnityVR箭头导航是一种实用且易于实现的导航方式,能够提高用户在VR环境中的导航和交互体验,也是VR应用开发者不可或缺的工具之一。 ### 回答3: Unity VR箭头导航是一种在虚拟现实应用中,用箭头指示用户朝哪个方向前进的功能。在VR应用中,用户通常无法看到自己的真实身体。因此,VR应用需要提供用户导航工具,以帮助用户找到自己想要到达的目的地。 Unity VR箭头导航可以让用户看到一个箭头,在虚拟空间中指示用户的前进方向。这样,用户就可以沿着箭头的方向前进,同时实现对虚拟环境的探索。箭头的颜色和大小等参数可以通过代码自定义,以适应不同的应用场景。 Unity VR箭头导航可以应用于多种VR应用场景,例如虚拟旅游、游戏、虚拟培训等等。使用箭头导航可以提高用户交互的体验,帮助用户更好地理解虚拟环境,优化用户的使用体验,同时也在保证用户舒适度的基础上减少感觉迷失的情况。 总之,Unity VR箭头导航是一个强大的虚拟现实工具,它可以帮助用户更好地探索虚拟环境,提高用户的交互体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城墙郭外斜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值