Первый снимок, показывающий, как движется персонаж. Что я хочу сделать, так это заставить персонажа ходить не только для перемещения, но и для перехода от одной или нескольких заданных точек к другой точке/с.В единстве, Почему мой персонаж движется так странно и все заикается при использовании точек пути?
А теперь, что я сделал до сих пор.
Добавлен в мою Иерархию: Ландшафт, Главная камера, Направленный свет, Цилиндр и 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();
}
}
Я отключил флажок в инспекторе thirdpersoncontroller на: «Контроль пользователя третьего лица» (Script), но ничего не изменил. –
Удалить компонент скрипта 'ThirdPersonController'. А также, если есть компонент CharacterController, удалите его. –