Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
4 / 4 / 0
Регистрация: 11.04.2012
Сообщений: 43

Передать методу значения

04.03.2014, 16:02. Показов 1310. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тут такое дело, взял кусочек готового рабочего кода, он осуществляет передвижение в игре и передаёт всем игрокам позицию куда ты переместился, работает всё ровно, кроме одного но!: перемещает он кубики-персонажи - по глобальным координатам, а не "туда куда смотрит игрок" (я об этом уже писал в другой теме когда то, но тогда я на это забил, сейчас вновь вернулся к вопросу).
Так вот дело в том, что я нашёл как заставить игрока двигаться в сторону куда он смотрит, НО!: теперь нужно разослать информацию другим игрокам.
Готовый и рабочий код есть, вот только вопрос как методу Move передать те координаты на которые мы переместились?


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
        public Player localPlayer { get; set; }            // запоминание нашего игрока
        private float Step = 3f;                                           // скорость игрока   
        private Transform thisTransform;
        
        private Vector3 oldPosition { get; set; }                   // старая позиция
        private const float SendRate = 0.05f;                       // как часто отправляется инфа
        private float lastSendTime = 0;                               // время последней отправки  
 
// разные проверки, нахождение нашего юзверя и отделение от остальных (тут всё работает и к делу код не относится, я его опущу
 
private void InputUpdate()
        {
            if (Input.GetKey(KeyCode.A))
            {
                thisTransform.Translate(-Step*Time.deltaTime, 0, 0);
            }
            else if (Input.GetKey(KeyCode.D))
            {
                thisTransform.Translate(Step * Time.deltaTime, 0, 0);
            }
            else if (Input.GetKey(KeyCode.W))
            {
                thisTransform.Translate(0, 0, Step * Time.deltaTime);
            }
            else if (Input.GetKey(KeyCode.S))
            {
                thisTransform.Translate(0, 0, -Step*Time.deltaTime);
            }
            else if (Input.GetKey(KeyCode.Space))
            {
                //Move(0, Step, 0);
            }
 
        }
 
        private void Move ()                                                //вот сюда как передать коор-ты  меня интересует
        {
            
            if (localPlayer != null)                                                                             
                localPlayer.Position += new Vector3(x, y, z) * Time.fixedDeltaTime;            
                
        }
 
        private void TrySend()                                                                                          
        {
            if (localPlayer.Position != oldPosition && lastSendTime < Time.time)                             
            {
                oldPosition = localPlayer.Position;                                                                      
                lastSendTime = Time.time + SendRate;                                                              
 
                PhotonServer.Instance.MoveOperation(oldPosition.x, oldPosition.y, oldPosition.z);       
            }

Поясню ещё раз:
До редактирования кода в методе InputUpdate() передвижение осуществлялось с помощью след кода:
C#
1
2
3
4
5
6
7
            if (Input.GetKey(KeyCode.A))
            {
                Move(-Step, 0, 0);
 
                       ....
 
            }
Т.е. значения координат сразу передавались в метод move и далее всё нормально работало (но вот только передвижение было по глобал коор-м), сейчас как видите я изменил код:
добавил private Transform thisTransform;
и сделал передвижение по локальным координатам, но вот как вернуть трансляцию в сеть - передачу координат в метод move - я не знаю.

Не по теме:

Простите за мой китайский, так много букаф, т.к. пытался максимально доходчивее донести суть траблы, а то при кратком описании до некоторых не доходит :ъ

0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.03.2014, 16:02
Ответы с готовыми решениями:

Как передать методу коллекции
Как предать методу Коллекции. public static string Vuvod(ArrayList o, ArrayList p) { int g=1, i=0; while(g!=int) { ...

Передать переменные методу File.AppendAllText
Как записать вместо Text переменные. Например System.IO.File.AppendAllText(&quot;C:\\Passwords.txt&quot;, a b c);

Запуская поток передать параметры методу
Всем привет.Помогите реализовать это: код нерабоатет потому что поток не могут передавать параметры((( как быть? using System; ...

8
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
04.03.2014, 16:28
Не просто сходу разобраться в чужом коде, но на вопрос:
как методу Move передать те координаты на которые мы переместились?

Могу ответить:
Тебе нужно изменить метод Move()
на
C#
1
private void Move (double x, int step, double y)
и дальше уже используй x, step,y в этом методе как тебе угодно - прибавляй к координатам и т.д. и т.п.
В скобках это передаваемые параметры (double, int - это типы передаваемых значений, возможно у тебя все int'ы), а кстати void - это значит, что метод ничего не возвращает, но тебе вроде не нужно ничего от метода получать
0
4 / 4 / 0
Регистрация: 11.04.2012
Сообщений: 43
04.03.2014, 16:44  [ТС]
мне нужно из метода thisTransform.Translate(float x, float y, float z)
передать значения x, y, z в метод Move (float x, float y, float z)
0
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
04.03.2014, 16:49
Цитата Сообщение от Johnnyk4 Посмотреть сообщение
мне нужно из метода thisTransform.Translate(float x, float y, float z)
передать значения x, y, z в метод Move (float x, float y, float z)
В теле метода thisTransform.Translate(float x, float y, float z) вызови метод Move(x, y, z) когда тебе нужно..
0
4 / 4 / 0
Регистрация: 11.04.2012
Сообщений: 43
04.03.2014, 17:08  [ТС]
а по другому можно? просто не желательно затрагивать тело thisTransform.Translate(float x, float y, float z)
0
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
04.03.2014, 17:14
при вызове thisTransform.Translate(float x, float y, float z) x,y,z - это глобальные переменные?
А какие нужно передать в Move()? - эти же переменные, после переработки их в thisTransform.Translate ?
0
4 / 4 / 0
Регистрация: 11.04.2012
Сообщений: 43
04.03.2014, 17:18  [ТС]
да глобальные, да после переработки

Добавлено через 55 секунд
хотя нет, не глобальные, но могу сделать глобальными наверное)
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
04.03.2014, 17:41
где объявленны переменные x, y, z которые вам надо передать ?
0
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
04.03.2014, 19:34
Цитата Сообщение от Johnnyk4 Посмотреть сообщение
хотя нет, не глобальные, но могу сделать глобальными наверное)
Если сделать их глобальными (объявить в классе, а не в методе), то передавать их будет не обязательно и вот здесь вот
C#
1
localPlayer.Position += new Vector3(x, y, z) * Time.fixedDeltaTime;
Вы будете работать с x,y,z - уже изменёнными, если, конечно, Move() вы вызвали после
C#
1
thisTransform.Translate(x, y, z)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2014, 19:34
Помогаю со студенческими работами здесь

Как передать методу строку матрицы
У меня есть метод для сортировки, но я хочу отсортировать одну строку из матрицы. Как мне правильно передать ее в метод

Передать коллекцию методу через интерфейс
Работаю с ObservableCollection. Разные коллекции содержат разные классы, но эти классы имеют общие свойства, с которыми работает...

Как передать значения методу
Есть следующий класс: class graphics { private Box box0 = new Box(); private Box box1 = new Box(); ...

Как передать путь файла методу?
Доброго времени суток! Пишу программу обработка изображений (просто небольшая программа, выполняющая несколько действий с .bmp). Нашел код,...

Передать имя типа методу на PowerShell
Всем добра! Я не спец в PowerShell, потому прошу помощи. Пример из мануала: SoftwareContainer softwareContainer =...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru