Как сделать бота в Игре?
Как сделать бота в Игре?
Давай создадим бота-охранника, который:
✅ Ходит случайно в радиусе 15 метров.
✅ Останавливается и говорит при приближении игрока.
✅ Показывает субтитры на экране.
1. Создаем бота (куб)
- Создай 3D Object -> Cube (назови
GuardBot
). - Добавь NavMeshAgent (он будет двигаться по сцене):
- Нажми Add Component → NavMeshAgent.
- Уменьши Speed (например,
2
). - Установи Stopping Distance = 1.5 (чтобы не подходил вплотную).
2. Добавляем коллайдер (чтобы бот "видел" игрока)
- Нажми Add Component → Sphere Collider.
- Установи Radius = 3–5 (чтобы бот "замечал" игрока).
- Включи Is Trigger.
3. Создаем UI для субтитров
- Создай UI -> Text (TMP) (если нет TMP, установи
TextMeshPro
). - Назови
SubtitleText
и установи:Font Size = 30
Alignment = Center
Color = White
Background = Black
(если хочешь затемнить фон).
- Включи Canvas -> Render Mode = Screen Space - Overlay.
4. Скрипт для движения и разговора
Создай C# скрипт GuardBot.cs
и добавь его на GuardBot
:
using UnityEngine;
using UnityEngine.AI;
using TMPro;
public class GuardBot : MonoBehaviour
{
public NavMeshAgent agent; // AI-движок
public Transform player; // Игрок
public TextMeshProUGUI subtitleText; // Субтитры
public AudioSource voiceAudio; // Голос охранника
public AudioClip[] phrases; // Реплики
private Vector3 startPosition;
void Start()
{
startPosition = transform.position;
MoveToRandomPoint(); // Начинаем двигаться
subtitleText.text = ""; // Очищаем текст
}
void MoveToRandomPoint()
{
Vector3 randomPos = startPosition + new Vector3(Random.Range(-15, 15), 0, Random.Range(-15, 15));
NavMeshHit hit;
if (NavMesh.SamplePosition(randomPos, out hit, 5.0f, NavMesh.AllAreas))
{
agent.SetDestination(hit.position);
}
}
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
agent.isStopped = true;
Speak();
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
agent.isStopped = false;
subtitleText.text = ""; // Убираем субтитры
MoveToRandomPoint();
}
}
void Speak()
{
int index = Random.Range(0, phrases.Length);
voiceAudio.clip = phrases[index];
voiceAudio.Play();
subtitleText.text = phrases[index].name; // Показываем субтитры
}
}
5. Настройка скрипта
-
Перетащи в инспекторе:
Agent
→ NavMeshAgent с бота.Player
→ Персонаж игрока.SubtitleText
→ TextMeshPro UI для субтитров.VoiceAudio
→ Audio Source (добавь его наGuardBot
).Phrases
→ Добавь несколько аудиофайлов с фразами.
-
Убедись, что у игрока стоит Tag: Player.
6. Финальные шаги
- Сделай бота чуть выше земли (чтобы не проваливался).
- Bake NavMesh (если не сделал):
- Открой
Window -> AI -> Navigation
. - Нажми
Bake
.
- Открой
- Запусти игру! 🎮
Теперь бот гуляет, останавливается при приближении, говорит, а субтитры появляются! 🔥
https://meistru.lt/uploads/public_files/2025-02/bot_suubtitlei_igrok_camera.rar
Рекламное место для вашего банера 100% ширина — от 50 евро/мес.
Реклама на сайте и тарифы на подписку. Тарифы