0 / 0 / 0
Регистрация: 28.10.2018
Сообщений: 20
1

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

28.10.2018, 15:11. Показов 716. Ответов 0

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

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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; 
            } 
            }   
 
    }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2018, 15:11
Ответы с готовыми решениями:

Не работает js скрипт в unity
Я написал скрипт на js для выбора случайного вопроса из списка и вариантов ответов для него в...

Unity. Маленький скрипт
Помогите найти ошибку в скрипте: var Player: GameObject; function OnTriggerEnter (other:...

Скрипт сетки в Unity
Здравствуйте! Создаю 2D игру с видом сверху и там будет возможность строить. Как сделать так, чтобы...

Написать скрипт воспроизведения звука в Unity 3d
Привет всем, помогите пожалуйста со скриптом. Есть вот такой скрипт, он весит на объекте. При...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2018, 15:11

Написать небольшой C# скрипт для unity 3d
Всем привет! Нужна написать скрипт на C#. Есть триггер, на триггере висит скрипт. При вхождении...

Игра работает корректно в Unity, но не работает после билда
Разрабатываю игру на Android. Решил сделать билд для проверки на телефоне. В Unity все скрипты...

Перенос данных из массива в программе на C# в скрипт на Unity
Всем доброго времени суток! Есть проект, в котором есть функция считывания двумерного массива из...

Динамический ScrollView работает в Unity, не работает в Android
Странная проблема. Есть scrollview. Заполняю его динамически префабами. В unity работает, все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.