как сделать векторное оружие

kama2akk

Новичок
Регистрация
26 Май 2023
Сообщения
17
Как сделать векторное оружие, и не одно..?
 

Harv1S

Гость
Регистрация
4 Май 2023
Сообщения
52

SashaLab7

Эксперт
Регистрация
3 Май 2023
Сообщения
95
Вся цель векторного оружия - определить, принадлежит ли точка конкретному отрезка, зная координаты точки и границ отрезка.

Существует несколько способов это определить, однако, самый легкий из них - геометрический.
Код написать не могу, так как на сервер зайти возможности нет. Но могу описать принцип работы.

vector.png
Точки a, a₁ - место выстрела. Точки b, b₁ - место попадания пули. Точки c, c₁ - Место другого игрока.

На 1 рисунке пуля не попадет в игрока. Чтобы это выяснить, нужно сложить длины ac + cb и сравнить сумму с длиной ab.
Если длина ac + cb равна длине ab, значит точка с принадлежит отрезку ab, но в нашем случае ac + cb больше ab, а значит пуля не попадет в игрока.

На 2 рисунке пуля попадет в игрока. Действуем также. a₁c₁ + c₁b₁ = a₁b₁, следовательно пуля попадет в игрока.

Извиняюсь за кривость картинки, было неохото все вырисовывать
 

Jimokjy

Участник
Регистрация
26 Фев 2024
Сообщения
1
Вся цель векторного оружия - определить, принадлежит ли точка конкретному отрезка, зная координаты точки и границ отрезка.

Существует несколько способов это определить, однако, самый легкий из них - геометрический.
Код написать не могу, так как на сервер зайти возможности нет. Но могу описать принцип работы.

Посмотреть вложение 3897
Точки a, a₁ - место выстрела. Точки b, b₁ - место попадания пули. Точки c, c₁ - Место другого игрока.

На 1 рисунке пуля не попадет в игрока. Чтобы это выяснить, нужно сложить длины ac + cb и сравнить сумму с длиной ab.
Если длина ac + cb равна длине ab, значит точка с принадлежит отрезку ab, но в нашем случае ac + cb больше ab, а значит пуля не попадет в игрока.

На 2 рисунке пуля попадет в игрока. Действуем также. a₁c₁ + c₁b₁ = a₁b₁, следовательно пуля попадет в игрока.

Извиняюсь за кривость картинки, было неохото все вырисовывать
Работает но нужно делать не равно а с небольшой разницей, т.к. иначе пуля попадет только если пролетит по середине игрока и на блоке где он стоит, а так вариант очень даже хороший
 
Сверху