首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NavMeshAgent卡在(外面) NavMesh

NavMeshAgent卡在(外面) NavMesh
EN

Stack Overflow用户
提问于 2016-07-02 17:30:23
回答 1查看 1.4K关注 0票数 0

对于敌人,我每隔x秒在导航网上设置一个随机位置,这样敌人就可以随意地四处走动。这里我的剧本:

随机点(来自统一文档)

代码语言:javascript
复制
bool RandomPoint (Vector3 center, float range, out Vector3 result)
{
    for (int i = 0; i < 30; i++) {
        Vector3 randomPoint = center + Random.insideUnitSphere * range;
        NavMeshHit hit;
        if (NavMesh.SamplePosition (randomPoint, out hit, 1.0f, NavMesh.AllAreas)) {
            result = hit.position;
            return true;
        }
    }
    result = Vector3.zero;
    return false;
}

我的随机运动剧本:

代码语言:javascript
复制
IEnumerator Walking ()
{
    if (!isFollowingPlayer && isServer) {
        Debug.LogError ("-- Start Walking --");
        agent.speed = 2;
        Vector3 randomDirection;
        bool blocked = RandomPoint (agent.transform.position, walkRadius, out randomDirection);
        NavMeshHit hit;
        blocked = NavMesh.Raycast (enemy.transform.position, randomDirection, out hit, NavMesh.AllAreas);
        if (!blocked) {
            geileMethodeZumZeichnen (agent);
            target = hit.position;
            agent.SetDestination (hit.position);
            geileMethodeZumZeichnen (agent);
            Debug.LogWarning ("Go to " + hit.position);
        } 
        if (blocked) {
            Debug.LogWarning ("-- BLOCKED --");
            yield return new WaitForEndOfFrame ();
        } else {
            Debug.LogWarning ("-- WAIT --");
            yield return new WaitForSeconds (5f);
        }
        StartCoroutine ("Walking");
    }
}

随机行走一般起作用。然而,当导航网格剂靠近导航网格的边界时,它似乎“爆发”了,然后被固定在自己的位置上。他只是在导航网外“焦虑不安”。(图像上的红线:路径)

看起来他们试图到达他们的位置,但不能再次进入导航网。我不希望他们首先离开:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-04 13:47:03

好的,这最后很简单:我没有正确地设置物理。敌人真的“感觉”到边缘,并被困在那里,因为物理。现在工作得很有魅力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38162772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档