Определить линию видимости и расстояние между двумя объектами в TCP-сервере - PullRequest
0 голосов
/ 14 сентября 2018

Я занимаюсь разработкой многопользовательской 3D-игры.Я использую Unity 3D в качестве платформы для разработки своего игрового клиента.Я должен создать консольное приложение MySQL C #, которое служит мне в качестве TCP-сервера.Я подключаю своего клиента по протоколу TCP к своему серверному приложению.У меня есть следующий сценарий:

У меня есть два игрока в игре, оба носят оружие и пытаются стрелять друг в друга.

Между ними есть стена, и игрок 1 получает ошибку при попыткестрелять в игрока 2: «Ваша цель не находится в зоне прямой видимости».(Обычно, потому что между ними есть стена)

Однако, игрок 2 использует «взлом», и он удаляет стену, чтобы не получить эту ошибку, и убивает Игрока 1.

Мой первый вопрос: Очевидно, что не стоит рассчитывать только на клиента, чтобы решить, есть ли объект между двумя игроками для штрафа и ошибки.Что я могу сделать, чтобы мое серверное приложение могло обнаружить наличие объекта между игроком и целью?Что вы можете предложить?

Мой второй вопрос: Как рассчитать расстояние между двумя объектами, которые есть в моем приложении сервера?Возможно ли это, и если да, то как?

1 Ответ

0 голосов
/ 14 сентября 2018

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

Чтобы сделать это и узнать расстояние, вы можетеRaycasting:

Vector3 direction = (...);
RaycastHit hit;
Vector3 convertDirection = transform.TransformDirection(direction);

if (Physics.Raycast(transform.position, convertDirection, out hit, Mathf.Infinity, layerMask))
{
    Debug.Log(hit.distance);
}

Редактировать: Как предположил Рафалон, не уверен, насколько экономически выгодно делать это на стороне сервера.но ты можешь сделать это.В конце концов, ты - Железный человек

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...