Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Определение id противника который нанес ущерб. (2 стр)

Определение id противника который нанес ущерб. (2 стр)

Страницы: 1 2
seamanПостоялецwww10 июня 201823:12#15
Delfigamer
> Зачем?
Например добавлять ему очки за попадание во врага.
DelfigamerПостоялецwww10 июня 201823:53#16
amd.fx6100
> Атаковать того кто атакует.
seaman
> Например добавлять ему очки за попадание во врага.
+ Показать
RikkПостоялецwww11 июня 20180:16#17
tonline_kms65
> Честно, я даже не знаю с чего начать.
1 делай выстрел правильно по честному . вектор начало-конец.
    или там полубесконечная прямая? типа в точке начало и в право/в лево бесконечно?
2 начало — координата ху экрана
3 какой-то поиск . типа -—— какой спрайт совпадает с этим началоХУ--он и есть . (там почитать уникальный идентификат ID или какая там штука отмечает)


или
  пп1
или там полубесконечная прямая? типа в точке начало и в право/в лево бесконечно?

известно в конце ху-конечное

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

от ху-конечное продолжаешь прямую линию бесконечно в лево/в право (в сторону другую от своих=в сторону противника)
пересечение . (ты ведь можешь там следить препятствия).
  если = пересечение есть И это не препятствие(не забор,не стенка и тд) И это не свой И это gamer(NPC, bot, )
    тогда=это оно и есть та штука которую искали (спрайт,картинка,или чего там)
        почитать ID (identificator) этой штучки=и по ID уже делай все остальное (очко плюс, счет плюс,деньги плюс, здоровье плюс и тд..)
    если их несколько штук , тогда модули векторов от них до конца. самый меньший модуль вектора (самое короткое расстояние)=оно и есть.

Правка: 11 июня 2018 0:20

ArochПостоялецwww11 июня 20181:47#18
Rikk
не все снаряды летают по прямой.
Delfigamer
расстреливаем труп сколько влезет и получаем за него очки.

Правка: 11 июня 2018 1:50

tonline_kms65Постоялецwww11 июня 20183:01#19
Вот что я понял из всей этой дискуссии.

Я зашел не с "того конца".
Нужно, изначально при стрельбе, все "жертвы" и атакающих записывать в общий массив. Юниты не стреляю в никуда, стрельба ведется только по противникам(юнитам)
Далее, если у кого-то из юнитов уменьшается HP - прохожу циклом по этому массиву, в случае совпадения id этого юнита и id жертвы из массива это и будет атающий.

Пока на работе, не могу проверить на практике, но теоретически мне кажется это вариант.


tonline_kms65Постоялецwww11 июня 20183:14#20
seaman
> tonline_kms65
> > не могу догадаться.
> И не догадаетесь никогда, если будете вести себя так.
> tonline_kms65
> > Я не читаю документацию на движке.
> Ну хотя бы какой движок написали. Может кто "менее занятый" прочитает и Вам
> расскажет.

Не заставляй меня повторяться.
Мне интересен принцип работы кода и совершенно не интресует работа готовой функции. В самом движке (как и любом) есть всё, абсолютно всё.
Не зная принципа работы кода я не знаю как и где функцию можно применить.
А лазить, ковыряться в исходниках движка - мне совершенно не интересно, и нет времени.

Правка: 11 июня 2018 3:20

ZabПостоялецwww11 июня 20183:27#21
tonline_kms65
Нам то откуда знать что у тебя за движок? Он как угодно может быть устроен, могут быть и анонимные повреждения, но так редко делают.
Скорее всего ты просто куда-то не туда подключаешься, где информация о стрелке уже потеряна, хотя изначально она была.
Абстрактный вопрос ответа не имеет.
tonline_kms65Постоялецwww11 июня 20183:38#22
Zab

Зачем движек? Не пойму. Мне нужен принцип (на словах, мысли), как можно сделать а не работа кода, на любом движке общий принцип работы одинаков, абсолютно.
Что бы не волновать никого - движек HL2. Язык на котором сейчас пишу - sourcepawn (одна из разновидностей Pawn).
Я не меняю движек, не трогаю его исходник.

Давайте уже во флуд не уходить. Не уводите от темы.

Правка: 11 июня 2018 3:43

ZabПостоялецwww11 июня 20184:11#23
tonline_kms65
Что непонятного то? Когда только начинали обрабатывать выстрел, информация о стрелявшем объекте была. Почему ты к ней доступа не имеешь - х.з. Либо слишком на позднем этапе подключился, когда информацию уже выкинули, либо она у тебя есть, но ты ее в упор не видишь почему-то.

Принцип - ловить выстрел раньше, когда стрелявший еще известен.

tonline_kms65Постоялецwww11 июня 20184:18#24
Zab

Так я и говорю - зачем движек?
Я же уже говорил, у меня всё есть, не трогая движек. Ты не читаешь тему что-ли?
Да и зачем движек? Я создаю Дрона, есть его id в глобале, есть id его жертв, так-же в глобале, и они не изменятся до самой "смерти" этих Дронов. Зачем движек - не пойму.
Сам движек я не трогаю вообще. С движком возможен конфликт только в плане движения и взаимодействия с миром и другими сущностями (физика), столкновения и .т.д.
Понятно что в движке есть свои данные, причем все, и они более оптимизированные и т.д., но меня они, в моём случае, не интересуют. У меня есть свои, доступные и понятные, потому-что созданны мною.

У меня мысль появилась (выше писал), если она сработает, значит у меня верное направление.

А, всё, я понял тебя. Прошу прощения. Ты думаешь что язык на котором я пишу это что-то "внутри" движка.
Нет, это как бы надстройка, управляющая работой движка. Вот в этой надстройке я и создаю NPC, который управляется командами надстройки, но при этом жестко подчиняется принципу работы движка. Например, если в движке есть гравитация, то мой NPC будет подчиняться этой гравитации, ну и т.д.

Правка: 11 июня 2018 4:41

ArochПостоялецwww11 июня 20185:17#25
tonline_kms65
если у тебе движок не сообщает о том кто выстрелил или ты не имеешь доступа к его внутренностям, то в отдельных случаях ты никак не узнаешь о том кто стрелял. Но аналитически выяснить в большинстве случаев можно, для этого постоянно мониторишь кол-во патронов у всех. В момент получения повреждений, смотришь у кого их кол-во изменилось в последней проверки. Для этих актеров смотришь куда они смотрят, проверяешь находятся ли они в непосредственной близости с жертвой, есть ли прямая видимость, в разных ли командах, смотрят в сторону жертвы. Складываешь все эти условия с определенными коэффициентами, сортируешь результаты, актер с наибольшим коэффициентом будет наиболее вероятным виновником повреждений. Но в случае когда в тебя двое или более стреляет одновременно и еще один стоит рядом и стреляет чуть выше твоей головы ты никогда не узнаешь кто же из них в тебя попал.
Страницы: 1 2

/ Форум / Программирование игр / Игровая логика и ИИ

2001—2018 © GameDev.ru — Разработка игр