Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
4 / 3 / 1
Регистрация: 30.01.2020
Сообщений: 51

AI для 2D платформера

02.02.2020, 11:25. Показов 4673. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть скрипт AI который преследует игрока, но независимо от того где находится мой игрок, бот все-равно будет его преследовать.
Что нужно добавить в скрипт, чтобы бот преследовал игрока на определенном расстоянии?


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 public float speed = 5f;
    Rigidbody2D rb;
    GameObject player;
    bool run = false;
    public int range = 3;
    Vector2 enemyPos;
    public float jumpForce;
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        player = GameObject.Find("Player");
        InvokeRepeating("Randomvent", 5, 3);
    }
 
    void FixedUpdate()
    {
        if (run == false)
        {
            enemyPos = Vector2.MoveTowards(transform.position, player.transform.position, speed * Time.fixedDeltaTime);
            if (transform.position.x > player.transform.position.x)
                transform.rotation = Quaternion.Euler(0, 180, 0);
            else if(transform.position.x < player.transform.position.x)
                transform.rotation = Quaternion.Euler(0, 0, 0);
        }
        else if(run == true)
        {
            enemyPos = Vector2.MoveTowards(transform.position, player.transform.position, -speed * Time.fixedDeltaTime);
            if (transform.position.x > player.transform.position.x)
                transform.rotation = Quaternion.Euler(0, 0, 0);
            else if (transform.position.x < player.transform.position.x)
                transform.rotation = Quaternion.Euler(0, 180, 0);
 
        }
        transform.position = new Vector2(enemyPos.x, transform.position.y);
 
    }
    void Randomvent()
    {
        /* switch(Random.Range(0,3))
        {
            case 1:
                run = true;
                Invoke("Run", 1);
                break;
            case 2:
                Jump();
                break;
        }
        */
    }
    
    void Run()
    {
        run = false;
    }
    void Jump()
    {
        rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Ground")
        {
            Jump();
        }
    }
    void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.tag == "Player")
            Application.LoadLevel(Application.loadedLevel);
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.02.2020, 11:25
Ответы с готовыми решениями:

Сенсорные кнопки для 2д Платформера (андроид)
Делаю 2д платформер, и нужно 3 сенсорные кнопки. (влево, вправо, прыжок). Пересмотрел кучу видео, везде юзали GUI но сейчас он не работает,...

Как отследить нажатия для платформера на мобилку?
Добрый день! Кароче, мне ПРОСТО нужен способ отследить нажатия на кнопки для движения вперед, назад и прыжок в unity. Игра на телефон....

У кого-нибудь есть спрайты для 2D платформера игры (типо дуллера)
Здравствуйте. Делаю игры на XNA для самообучения, но не могу найти толковых спрайтов. Делаю нечто похожее на дудлера с андройда.....

3
 Аватар для Steroid
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
02.02.2020, 14:43
Лучший ответ Сообщение было отмечено Aapnoot как решение

Решение

C#
1
float distance = Vector3.Distance(игрок.transform.position, враг.transform.position);
теперь проверяй растояние и делай то что тебе нужно
C#
1
2
3
4
if(distance < растояния)
{
// преследовать игрока 
}
1
4 / 3 / 1
Регистрация: 30.01.2020
Сообщений: 51
02.02.2020, 15:24  [ТС]
Благодарю

Добавлено через 7 минут
Слушай, а не подскажешь как сделать так, чтобы потом бот обратно возвращался?)))
Ну то есть Игрок убежал, а бот потом обратно на свое место
0
 Аватар для Steroid
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
02.02.2020, 15:54
Цитата Сообщение от Steroid Посмотреть сообщение
if(distance < растояния)
{
// преследовать игрока
}
if(distance > растояния)
{
// вернутся на предидущую позицию
// позицию можно установить "пустышкой" и назначит в скрипте как GameObject
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2020, 15:54
Помогаю со студенческими работами здесь

Создание платформера в Delphi
Помогите пожалуйста написать простенький платформер в Delphi. 1. Я ранее не брался за создание игр в Delphi и полагаю что нужно...

Реализация гусениц 2D платформера
Здравствуйте. При создании 2д платформера, возникла проблема, как в 2д игре создать гусеницы для танка. Пример результата можно увидеть в...

Вспомнить название платформера
Кстати товарищи... вспомнилась мне одна игра старенькая но название не могу вспомнить... мож кто помнит? карочь игрок играет таким...

Графика платформера? (Игра)
Добрый день. Скорее всего это просто теоретический вопрос, но всё же: Предположим, платформер типа electronic super joy, super meat...

На тему платформера pygame
import pygame s=(640,480) window=pygame.display.set_mode(s) pygame.display.set_caption('hello py game') screen=pygame.Surface(s) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru