C# Unity - не работает скрипт у клиента

143
14 марта 2019, 20:50

Пытаюсь разобраться с UNet, но что-то не до конца понимаю. Я проверяю, клиент ли игрок, и если да, то запускаю клиентскую версию функции, описанной ниже с помощью ClientRpc, а у сервера все уже синхронизировано, и ему я синхронизацию не прописывал. Чувствую, что допускаю глупую ошибку, но я почему-то не могу понять эти серверные функции.

void Update () {
if(isClient) {
 RpcGrabIt();
} 
else {
//функция на стороне сервера
if (Input.GetMouseButtonDown (1)) { 
Physics.Raycast (transform.position, transform.forward, out hit, rayDistance); 
if (hit.rigidbody) { 
Grab = true; 
} 
} 
if (Input.GetMouseButtonDown (0)) { 
if (Grab) { 
Grab = false; Throw = true; 
} 
} 
if (Grab) {
if (hit.rigidbody) {
            hit.rigidbody.velocity = (offset.position - (hit.transform.position + hit.rigidbody.centerOfMass)) * grabPower / hit.rigidbody.GetComponent<Rigidbody>().mass; 
    } 
    } 
    if (Throw) {
        if (hit.rigidbody) {
            hit.rigidbody.velocity = transform.forward * throwPower / hit.rigidbody.GetComponent<Rigidbody>().mass; Throw = false; 
            } 
            }
}   
            }
//Клиентская функция - то же самое, что и функция выше
[ClientRpc]
public void RpcGrabIt() {
if (Input.GetMouseButtonDown (1)) { 
Physics.Raycast (transform.position, transform.forward, out hit, rayDistance); 
if (hit.rigidbody) { 
Grab = true; 
} 
} 
if (Input.GetMouseButtonDown (0)) { 
if (Grab) { 
Grab = false; Throw = true; 
} 
} 
if (Grab) {
if (hit.rigidbody) {
            hit.rigidbody.velocity = (offset.position - (hit.transform.position + hit.rigidbody.centerOfMass)) * grabPower / hit.rigidbody.GetComponent<Rigidbody>().mass; 
    } 
    } 
    if (Throw) {
        if (hit.rigidbody) {
            hit.rigidbody.velocity = transform.forward * throwPower / hit.rigidbody.GetComponent<Rigidbody>().mass; Throw = false; 
            } 
            }   
    }
READ ALSO
Html Agility Pack не может спарсить сайт

Html Agility Pack не может спарсить сайт

При попытке выполнить

135
Сохранить экран как изображение или PDF

Сохранить экран как изображение или PDF

В приложении есть экраны, унаследованные от ContentPageЕсть ли какие-то способы представить эти экраны в виде изображений либо PDF-файлов или страниц?...

164
Android(Xamarin) Как получить данные с браслета через Bluetooth

Android(Xamarin) Как получить данные с браслета через Bluetooth

Моя цель получить данные(показатели пульса, давление) с фитнес браслета Torntisc T1 с помощью своего приложения и самостоятельно обрабатывать...

169
Создание\удаление объектов. Instantiate

Создание\удаление объектов. Instantiate

Всем приветПишу простую 2д игру на юнити

157