Четверг, 21 Ноября 2024, 18:46

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [358]
Статьи об общих понятиях связанных с созданием игр.
Программирование [83]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [147]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [167]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [132]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Какой вид используется в ваших играх?
Всего ответов: 10346
Главная » Статьи » Создание игр

Создание простого ИИ с помощью NavMesh(для FPS). Часть 2
Так... Сейчас мы будем работать с дополнительными эффектами для врага. Так как у нас враг для FPS (First Personal Shooter), мы сделаем только самое основное. Это эффекты выстрела (звуки, партиклы) и анимация. У нас есть готовый скрипт ИИ, написанный в предыдущем уроке. Вот, собственно, он:
Code

using UnityEngine;  
using System.Collections;  

public class AINavMesh : MonoBehaviour {  
public Transform _target; // Указываем переменную, к которой будет двигаться наш агент  
NavMeshAgent _agent; // Указываем переменную агента  

void Start () {  
_agent = (NavMeshAgent)this.GetComponent("NavMeshAgent"); // Указываем, что переменная _agent - это наш агент.  
}

void Fire(){
Rigidbody ins = Instantiate(_bullets, _weapon.position, _weapon.rotation) as Rigidbody;  
  ins.rigidbody.AddForce(transform.forward * 5000);
}

void Update () {  
Vector3 pos = player.transform.position;
pos.y = transform.position.y;
GameObject player = GameObject.FindGameObjectWithTag("Player");  
_home = transform.parent.transform;  
_agent.SetDestination(_target.position); // Заставляем агента двигаться в сторону _target'а  
if(Vector3.Distance(_agent.transform.position, player.transform.position) < 100){  
transform.LookAt(pos);
_target = player.transform;  
}  
else{  
  _target = _home;  
}
if(Vector3.Distance(_agent.transform.position, player.transform.position) < 50){  
  Fire();
  _agent.speed = 0;  
  }  
  else{  
  _agent.speed = 3.5f;  
  }  
}  
}

Приступим. Сначала мы рассмотрим анимацию. Тут я не рассказываю, как она создаётся, тут я рассказываю, как её воспроизвести её в скрипте. Но сразу предупрежу. У меня скелетная анимация, записанная в самой юнити. Я сделаю так, чтобы пригралась сначала анимация вскидки оружия. Но для начала нужно создать переменную public AnimationClip _handStart;. И я создаю новый метод. Это void Awake(){}. Поясняю. Awake - метод при загрузке. И в этом методе прописываем animation.AddClip(_handStart, "start");. Тут я добавляю новую анимацию в скрипт. Вот. теперь в void Start() прописываем animation.CrossFade("start");. То есть мы делаем смешанное произведение анимации. У меня теперь вскидывается оружие при старте. Теперь пошли дальше. Теперь создадим анимацию ходьбы и стрельбы. Всё делается таким же способом, что и анимация при старте. То есть для ходьбы public AnimationClip _walk;, добавляем в Awake() animation.AddClip(_walk, "walk"); и вызываем её в условии дистанции меньше 100: animation.CrossFade("walk");. Так же и со стрельбой (ток с именами другими) и вызываем в условии дистанции меньше 50. Теперь создадим звук стрельбы. Создадим в редакторе пустой GameObject и привяжем его к врагу. Добавим туда компонент AudioSource. Выберем звук. Теперь опять в скрипт. Создаём переменную public AudioSource _audioFire;. Теперь вызываем в методе Fire(). Всё! Со звуком всё просто (ток в инспекторе не забудьте указать). Сейчас создадим партикл искр при стрельбе. Тож привязываем к врагу. Теперь опять в скрипт. Там создаём переменную public ParticleRenderer _particleFire;. И в методе Start() прописываем отключение партикла. то есть _particleFire.enabled = false;. А в методе Fire() - _particleFire.enabled = true;. Всё! В общем всё готово. Наш ИИ с простенькими эффектами готов. Дальше будет статья про создание ИИ в RPG. До встречи! Ах да... Не забывайте всё указывать в инспекторе)
Категория: Создание игр | Добавил: Nekit_Aut (21 Марта 2012)
Просмотров: 10786 | Рейтинг: 5.0/8 |
Теги: партиклы, анимация, ИИ, Unity3D, fps, эффекты, NavMesh, AI, звук
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Создание простого ИИ с помощью NavMesh(для FPS). Часть 2», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Pixel Vision 8
  • Diligent
  • Mortal Szombat
  • RealmForge
  • Qfusion
  • GameGuru
  • EDuke32
  • GameSalad
  • Picotron
  • J.U.R.P.E.
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг