2016-07-23 5 views
0

Первый снимок, показывающий, как движется персонаж. Что я хочу сделать, так это заставить персонажа ходить не только для перемещения, но и для перехода от одной или нескольких заданных точек к другой точке/с.В единстве, Почему мой персонаж движется так странно и все заикается при использовании точек пути?

Moving Character Video

А теперь, что я сделал до сих пор.

Добавлен в мою Иерархию: Ландшафт, Главная камера, Направленный свет, Цилиндр и ThirdPersonController.

В ThirdPersonController я нажал на меню: Компонент> Навигация> Nav Mesh Agent

Затем потащил к ThirdPersonController сценарий Patroll.cs.

В инспекторе ThirdPersonController в зоне патрулирования я добавил 2 точки Стены и цилиндр. Я хочу, чтобы персонаж шел от Стены (здания) до Цилиндра. Также в области Patroll я добавил агента: ThirdPersonController (агент Nav Mesh).

Затем в иерархии я щелкнул по рельефу, щелкнув, чтобы сделать его статическим, а затем щелкнуть в меню «Окно»> «Навигация»> «Выпекать», а затем нажать кнопку «Выпекать».

Тогда при запуске игры персонаж начинает странствовать, двигаясь автоматически, и все заикается. Перед добавлением сценария Patroll и агента Nav Mesh в ThirdPersonController я мог бы перемещать символ с помощью клавиш WSAD.

Цель в настоящее время то, что я хочу сделать, - это когда-нибудь запускать игру, если я иду с помощью клавиш WSAD или прикоснусь к стенам (зданию), тогда персонаж начнет двигаться автоматически до положения цилиндра. Или при запуске игры персонаж начнет движение автоматически от его начального положения к стенам, а затем к 3-тактным точкам цилиндра.

Это сценарий Patroll в C#

using UnityEngine; 
using System.Collections; 

public class Patroll : MonoBehaviour { 

    public Transform[] points; 
    private int destPoint = 0; 
    public NavMeshAgent agent; 

    // Use this for initialization 
    void Start() { 


     agent = GetComponent<NavMeshAgent>(); 
     // Disabling auto-braking allows for continuous movement 
     // between points (ie, the agent doesn't slow down as it 
     // approaches a destination point). 
     agent.autoBraking = false; 

     GotoNextPoint(); 

    } 

    void GotoNextPoint() { 
     // Returns if no points have been set up 
     if (points.Length == 0) 
      return; 

     // Set the agent to go to the currently selected destination. 
     agent.destination = points[destPoint].position; 

     // Choose the next point in the array as the destination, 
     // cycling to the start if necessary. 
     destPoint = (destPoint + 1) % points.Length; 
    } 


    void Update() { 
     // Choose the next destination point when the agent gets 
     // close to the current one. 
     if (agent.remainingDistance < 0.5f) 
      GotoNextPoint(); 
    } 
} 

ответ

0

Избавиться от компонента ThirdPersonController сценария, когда он имеет Patroll компонент сценария в нем.

+0

Я отключил флажок в инспекторе thirdpersoncontroller на: «Контроль пользователя третьего лица» (Script), но ничего не изменил. –

+0

Удалить компонент скрипта 'ThirdPersonController'. А также, если есть компонент CharacterController, удалите его. –