drcrack, Я имел в виду это: На клиенте была нажата клавиша W, формируется запрос в котором клиент передаёт на сервер команду "forward", и вектор направления камеры - cam.transform.forward, но так как передать готовый вектор нельзя, будем передавать его компоненты x, y, z. То есть вот так: cam.transform.forward.x, cam.transform.forward.y, cam.transform.forward.z. На сервер приходит запрос от клиента с командой forward и вектором направления камеры. Сервер берёт и к текущей позиции игрока, хранящейся на сервере, прибавляет вектор, пришедший с клиента. То есть так: Position.x + cam.transform.forward.x, Position.y + cam.transform.forward.y, Position.z + cam.transform.forward.z. И новую позицию отсылает клиенту и другим клиентам. На самом деле выглядеть код будет примерно так: Position.x + newPos.x, Position.y + newPos.y, Position.z + newPos.z. Где Position - позиция игрока на сервере. newPos - переменная в которую записывается вектор, пришедший с клиента. Я делал именно так на фотоне и у меня всё работает. Красочная сюжетно-ориентированная игра-головоломка
А ты посмотри как делается управление от первого лица в юнити. К вектору текущей позиции прибавляется вектор направления камеры или самого персонажа. То есть на клиенте была нажата клавиша влево, на сервер приходит запрос с сообщением "влево" и сервер к делает так: Player.position.x - 5f. Если надо вперёд то: Player.position.x + координата направления игрока. Но чтобы работало всё как в одиночной игре от первого лица, то нужно отправлять с клиента серверу вектор направления например камеры. И на сервере к вектору позиции прибавлять вектор камеры пришедший от игрока. Тогда всё будет работать. Красочная сюжетно-ориентированная игра-головоломка
Есть объект выступающий в роли корпуса. У него есть Mesh Collider, Rigidbody. Mesh Renderer'a нету. Этот объект является родителем для двух объектов-частей у которых есть только Mesh Filter и Mesh Renderer. Есть скрипт который висит на главном объекте-корпусе. Когда главный объект падает с высоты на пол, то в точках соприкосновения сдвигаются вершины, то есть происходит деформация. Я делаю так, что когда главный объект ударился, то деформация применяется к тем объектам - частям, а у главного объекта изменяется только Mesh Collider.
Проблема в том, что при столкновении как на скриншоте:
Должно получится вот так:
А получается вот так:
Скрипт:
Код
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class DeformationParts : MonoBehaviour {
public MeshFilter[] deformMeshes; Mesh[] meshes; public float minVelocity = 5f; public float deformRadius = 0.5f; public float multiply = 0.05f;
void Start () { meshes = new Mesh[deformMeshes.Length];
for (int i = 0; i < deformMeshes.Length; i++) { meshes[i] = deformMeshes[i].mesh; } }
Добавлено (22 Августа 2018, 10:19) --------------------------------------------- Вобщем это мне нужно для того чтобы сделать деформацию машины. Для этого нужно взять целый мешь машины, по нему сделать Mesh Collider, сам этот мешь сделать невидимым, и при столкновениях менять отдельные меши бамперов, капотов и т.д. А у этих мешей Mesh Collider'ов нету. При деформации менять меши отдельных частей, и Mesh Collider машины менять по изменениям этих отдельных мешей. Красочная сюжетно-ориентированная игра-головоломка
Сообщение отредактировал vampir0305 - Среда, 22 Августа 2018, 10:19
Оформление мягко говоря дебильное(не сочти за оскорбление), но помогу: if (other.gameObject.tag == "Coin") так в новых версиях юнити уже не работает. Надо так:
Код
if (other.gameObject.CompareTag("Coin")) { тут твой код }
Если начал с C# то учи Unity. Он лучше чем Game Maker. Я это говорю, так как сам использовал сначала Гамак, потом перешёл на Unity. В юньке больше возможностей. В любом случае выбор за тобой. Красочная сюжетно-ориентированная игра-головоломка
Если я правильно тебя понял, то тебе нужен Photon Unity Network. Site
Добавлено (31 Июля 2018, 00:08) --------------------------------------------- Для начала можешь попробовать Photon Cloud. Потом, если захочешь больше возможностей и контроля то - Photon Server. Ну или собственное решение.
target - объект за которым двигается камера, то есть за игроком. smoothTime - плавность движения камеры, чем больше значение тем резче будем двигаться камера. Этот код двигает камеру по оси x и y от своих текущих координат к координатам цели. Если нужно чтобы движение было исключительно по оси y, то пишем так:
Код
transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, target.position.y, transform.position.z), Time.deltaTime * smoothTime);
Закидываешь все префабы оружия на игрока и деактивирешь их. Когда переключаешься на какоё-то оружие активируешь его. А то которое было в рука деактивируешь. Красочная сюжетно-ориентированная игра-головоломка
Camera.ScreenToWorldPoint например можно использовать, когда по клику на сенсорном экране, в игре создавался объект в месте клика. Хотя для этого есть EventSystems Красочная сюжетно-ориентированная игра-головоломка
Всем привет. При выборе сетевого решения, взгляд пал на Photon. Но не особо понял про Cloud. Насколько я понял Server это исходник сервера, который можно менять как хочешь, но это сложно для меня. А вот с Cloud проще, там сервер они держат сами, если нужно больше 20 слотов на сервере, то просто платишь деньги. Вот вопрос про Cloud: можно ли как-то сделать, чтобы на сервере не было хоста(или мастер-клиента) как это сделано на UNET, то есть сервер был главным, а игроки просто обменивались с ним данными. Или на Cloud это итак уже сделано.
P.S. В игре Rust(она сделана на Unity) в одном из девблогов был скрин, где я увидел, что у них мультиплеер сделан на Photon. Но только не понял, это Cloud или Server. Я из-за [PunRPC] подумал что это Cloud. Вот скрин: