2016-07-20 6 views
0

Может кто-нибудь, возможно, скачать и посмотреть мой проект? Это очень просто, но не работает, как в учебнике.Почему в моем проекте единство не работает?

В моем проекте я установил IsTrigger в true в ThirdPersonController или AIThirdPersonController для одного из символов. Это заставляет персонажа падать с самолета.

Я также сменил один из символов, который будет помечен как Player и изменил состояние с PATROL на CHASE, но это ничего не изменило. Другой игрок никогда не преследует/следит за игроком, которого я контролирую и передвигаюсь.

Почему игроки падают, когда я установил IsTrigger в true в моем проекте?

Я вижу в видео, что инструктор использует лабиринт самолета. Является ли это пакетом, который я должен импортировать в Активы или это уже где-то в активах? Я только что добавил регулярный самолет, потому что я не мог найти Лабиринт.

Вот ссылка для моего проекта с моего OneDrive. Имя файла Demo AI.rar:

Project in OneDrive

Вот ссылка на видео-учебник я пытающийся следовать. Это предполагает, чтобы быть простым, я полагаю:

Tutorial

Вот BasicAi класс я использую в моем проекте, тот же сценарий с видео-учебник:

using System.Collections; 
using UnityStandardAssets.Characters.ThirdPerson; 

public class BasicAi : MonoBehaviour { 

    public NavMeshAgent agent; 
    public ThirdPersonCharacter character; 

    public enum State { 

     PATROL, 
     CHASE 
    } 

    public State state; 
    private bool alive; 

    // Variables for patrolling 
    public GameObject[] waypoints; 
    private int waypointInd = 0; 
    public float patrolSpeed = 0.5f; 


    // Variable for chasing 
    public float chaseSpeed = 1f; 
    public GameObject target; 


    // Use this for initialization 
    void Start() { 

     agent = GetComponent<NavMeshAgent>(); 
     character = GetComponent<ThirdPersonCharacter>(); 

     agent.updatePosition = true; 
     agent.updateRotation = false; 

     state = BasicAi.State.PATROL; 

     alive = true; 

     StartCoroutine ("FSM"); 

    } 

    IEnumerator FSM() 
    { 
     while (alive) 
     { 
      switch (state) 
      { 

      case State.PATROL: 
       Patrol(); 
       break; 
      case State.CHASE: 
       Chase(); 
       break; 
      } 
      yield return null; 
     } 
    } 

    void Patrol() 
    { 
     agent.speed = patrolSpeed; 

     if (Vector3.Distance (this.transform.position, waypoints [waypointInd].transform.position) >= 2) { 

      agent.SetDestination (waypoints [waypointInd].transform.position); 
      character.Move (agent.desiredVelocity, false, false); 
     } else if (Vector3.Distance (this.transform.position, waypoints [waypointInd].transform.position) <= 2) { 
      waypointInd += 1; 
      if (waypointInd > waypoints.Length) { 
       waypointInd = 0; 
      } 
     } 
     else 
     { 
      character.Move (Vector3.zero, false, false); 
     } 
    } 

    void Chase() 
    { 
     agent.speed = chaseSpeed; 
     agent.SetDestination (target.transform.position); 
     character.Move (agent.desiredVelocity, false, false); 
    } 

    void OnTriggerEnter(Collider coll) 
    { 
     if (coll.tag == "Player") 
     { 
      state = BasicAi.State.CHASE; 
      target = coll.gameObject; 
     } 
    } 
} 
+0

Я не могу опубликовать более одной ссылки, но я добавляю здесь еще одну ссылку на мой проект в megafileupload http://www.megafileupload.com/nYky/Demo_AI.rar –

+0

Я не загружал архивы, но если вы используете IsTrigger() для обработки столкновения, вы будете проходить через объекты. – Cabrra

ответ

0

После того, как коллайдер триггер больше не сталкивается с объектами, лучше всего разместить дочерний объект с коллайдером и установить его на триггер, таким образом, исходный коллайдер все равно столкнется с вашей землей.

Что касается вашего другого вопроса, как вы ссылаетесь на своего персонажа третьего лица, вы перетаскиваете его со сцены в инспектор, и вы также должны испечь свой navmesh в своей сцене. Я не смотрел на ваш проект, так как это займет много времени, но, возможно, еще раз просмотрите учебник и посмотрим, как они ссылаются на персонажа. С встроенными символами вы обычно должны сначала получить доступ к пространству имен.