Пятница, 29 Марта 2024, 01:53

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Самонаводящаяся пулька (Пытаюсь сделать самонаводящуюся ракету и встал вопрос выбора)
Самонаводящаяся пулька
ArtemSДата: Среда, 25 Октября 2017, 18:38 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Фишка работы такая, что я стреляю в любом направлении, пуля ищет ближайшую цель и летит к ней.

написал такой код и не могу понять как именно из всех этих GO выбрать тот, что нужен именно мне, помогите пожалуйста lovegcup
Код

void lookPlease()
    {
        GameObject [] targets = GameObject.FindGameObjectsWithTag("Enemy");
        foreach (GameObject target in targets)
        {
          var t =  Mathf.Min(Vector2.Distance(gameObject.transform.position, target.transform.position));

            if (???????)
            {
                var target_pos = target.transform.position;
                float fpsX = target.transform.position.x - transform.position.x;
                float fpsY = target.transform.position.y - transform.position.y;
                float angle = Mathf.Atan2(fpsX, fpsY) * Mathf.Rad2Deg;
                Quaternion b = Quaternion.Euler(new Vector3(0, 0, -angle));
                transform.rotation = Quaternion.Lerp(transform.rotation, b, 10 * Time.deltaTime);
            }
        }
    }


и думаю придется решать вопрос в дальнейшем. как можно ограничить поиск целей в определенном углу перед игроком, чтобы не всех пролистывал в округе, а только тех кто в +-30 градусах перед игроком стоит.


хуяк, хуяк и в продакшн
MR_BorgДата: Среда, 25 Октября 2017, 19:14 | Сообщение # 2
участник
Сейчас нет на сайте
Самое простое
Код

void lookPlease()
    {
        GameObject [] targets = GameObject.FindGameObjectsWithTag("Enemy");
        GameObject currentTarget;
        
        float dist=999999;

        foreach (GameObject target in targets)
        {
          var t =  Vector3.Distance(gameObject.transform.position, target.transform.position);

            if (t<dist)
            {
              dist=t;
              currentTarget=target;
            }
        }
    }



Изучаю C++ попутно пишу игру.
drcrackДата: Среда, 25 Октября 2017, 19:27 | Сообщение # 3
старожил
Сейчас нет на сайте
Цитата
а только тех кто в +-30 градусах перед игроком стоит.

для этого все равно сначала придется пройтись по всем, чтобы посчитать угол


Сообщение отредактировал drcrack - Среда, 25 Октября 2017, 19:31
pixeyeДата: Среда, 25 Октября 2017, 21:27 | Сообщение # 4
Red Winter Software
Сейчас нет на сайте
Цитата ArtemS ()

написал такой код и не могу понять

Как можно писать не понимая?

Цитата ArtemS ()
как именно из всех этих GO выбрать тот, что нужен именно мне, помогите пожалуйста

Откуда знать по какому критерию ты выбираешь? По дистанции? По угрозе? По цвету? По настроению? Объясни что ты хочешь внятно для начала : )

Цитата ArtemS ()
и думаю придется решать вопрос в дальнейшем. как можно ограничить поиск целей в определенном углу перед игроком, чтобы не всех пролистывал в округе,


Код

       var sight = 10f; // угол обзора
        var direction= target.position - transform.position;
        var angle = Vector3.Angle(transform.forward, direction);
        if (angle <= sight)
        {
            Fire()
        }

Будет ли работать такой код зависит от оси на которую ты ориентируешься.

Здесь о том как смотреть в радиусе чего-то.

Все что тебе нужно знать, чтобы отпало 90 % вопросов


ACTORS - мой фреймворк на Unity
Until We Die - игра над которой работаю



Сообщение отредактировал pixeye - Среда, 25 Октября 2017, 21:41
ArtemSДата: Четверг, 26 Октября 2017, 04:13 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Цитата MR_Borg ()
Самое простое

спасибо, думаю это то, что надо)

Цитата pixeye ()
Как можно писать не понимая?

ну бывает возникают вопросы, особенно когда 11 на часах)

Цитата pixeye ()
Откуда знать по какому критерию ты выбираешь? По дистанции? По угрозе? По цвету? По настроению? Объясни что ты хочешь внятно для начала : )


по цвету кожи у пилота - пуля расист!!!! xD конечно, по кратчайшей дистанции, я же ее определяю)

Цитата pixeye ()
Будет ли работать такой код зависит от оси на которую ты ориентируешься.


попробую, но думаю возникнет проблемка с локальной осью, придется немного подшаманить. спасибо


хуяк, хуяк и в продакшн
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Самонаводящаяся пулька (Пытаюсь сделать самонаводящуюся ракету и встал вопрос выбора)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг