forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

pax 22.07.2010 22:26

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 155966)
А зачем, если не секрет?:)

Вспомните любую 2D игру и в ней эффекты. Например когда тебе дают приз или что-то еще.

den 22.07.2010 22:33

Ответ: Фак по Юнити.
 
Цитата:

Вспомните любую 2D игру и в ней эффекты. Например когда тебе дают приз или что-то еще.
Ааа...:)
А тогда нельза как нибуть партикли запихнуть в ОнГуи() ? (я прсто так говорю, точно не знаю:) )

Nuprahtor 22.07.2010 22:43

Ответ: Фак по Юнити.
 
Pax
Скорее всего это можно сделать только рендером в текстуру
Lookie-lookie here
Либо использовать "устаревшую систему гуи" (?)
And here too

pax 22.07.2010 22:45

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 155968)
Ааа...:)
А тогда нельза как нибуть партикли запихнуть в ОнГуи() ? (я прсто так говорю, точно не знаю:) )

Я и написал что не вижу способа, кроме как рендерить партиклы в текстуру и рисовать ее в конце OnGUI либо писать свою систему частиц и так же рисвоать в OnGUI самостоятельно. Чего не внимательно читаем то?

pax 22.07.2010 22:46

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Nuprahtor (Сообщение 155971)
Скорее всего это можно сделать только рендером в текстуру

Только рендер в текстуру использовать не хочется, а GUIText и GUITexture очень не удобны.

den 25.07.2010 00:46

Ответ: Фак по Юнити.
 
А может кто нибуть объяснить как импортировать 3д модель?
У меня загружаются толко .3ds и .fbx и то без текстур почемуто... (импортирую и модель и текстуры в одну папку, а модель всё равно без текстур остаётся...:( )
А все остальные (.max и другие), импортируются, но нет даже предпросмотра, и на сцену идти не хотят.
Что я делаю не так?

Fatalix3d 25.07.2010 09:26

Ответ: Фак по Юнити.
 
Ну допустим у тебя танк и к нему 2 тексы диффуз и бамп, ты положил все в одну папку, теперь в юнити ты создаешь папку танк и в нее грузи сперва тексы а потом модель, иначе он будет у тебя серый (хотя что мешает в ручную положить текстурки ну конечно если у тебя не суб-материал с 125 матами=) ).

А если ты сделал модель и положил в сцену но исходник в максе уже претерпел изменения (добавил танку пушку с сзади и еще 8 колес) то просто удали ее и пере импортируй и она обновиться в сцене.

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

*****************************
Насчет 2D партиклов и т.д а ортаграфический режим камеры?) + обычный партикл система?

pax 25.07.2010 10:14

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den
А может кто нибуть объяснить как импортировать 3д модель?
У меня загружаются толко .3ds и .fbx и то без текстур почемуто... (импортирую и модель и текстуры в одну папку, а модель всё равно без текстур остаётся... )
А все остальные (.max и другие), импортируются, но нет даже предпросмотра, и на сцену идти не хотят.
Что я делаю не так?

Импорт - дело такое. Если хочешь, чтобы FBX импортировался с материалами, то экспортируй модели из макса с включенной опцией Embaded Textures. При импорте текстуры автоматически импортируются из FBX в папку "имя_модели.fbm" и автоматом создадуться материалы.
Импортировать из макса вообще не советую. При импорте юнити подгружает в память макс (что очень тормозит) и таким же образом экспортирует в FBX формат (так же Maya, Blender, Cinema4D и др.).

Цитата:

Сообщение от Fatalix3d (Сообщение 156094)
Насчет 2D партиклов и т.д а ортаграфический режим камеры?) + обычный партикл система?

Читать по внимательнее про проблему лень было?) Нужно рисовать партиклы поверх всего, что нарисовано в OnGUI(). Рендеринг в текстуру не вариант.

den 25.07.2010 12:26

Ответ: Фак по Юнити.
 
1)Если сеачало загружать текстуры, а потом модель - работает, на половину...
Половино деталей в модели покрываются текстурами, а половина остаются без текстур.
2) А как всётаки импортировать модельформата .max в юнити, не конвертирую её в .fbx?

Nuprahtor 25.07.2010 12:31

Ответ: Фак по Юнити.
 
Цитата:

2) А как всётаки импортировать модельформата .max в юнити, не конвертирую её в .fbx?
А зачем?

den 25.07.2010 12:32

Ответ: Фак по Юнити.
 
Цитата:

А зачем?
У меня 3д макса нету...
Конвертировать нечем...

den 25.07.2010 13:53

Ответ: Фак по Юнити.
 
Ладно, с моделями вроде разобрался.
Слежующий вопрос: вот есть гуи текстура, как её поворачивать во время игры на определённый угол.
Короче как стрелку от спидометра.

Fatalix3d 25.07.2010 17:54

Ответ: Фак по Юнити.
 
Ставим стрелку (texture2d) и рядом пустой gameObject (pivot) и крутим его.
Pax ахтунгую было бы круто сеть осветить, конект к серверу и т.д просто для начала бегающие кубики.

Я тут сам копал но что то у меня не правильно работает, я управляю всеми клиентами, смотрится конечно прикольно но все же (делал по M2H)

ffinder 25.07.2010 22:03

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Fatalix3d (Сообщение 156132)
у меня не правильно работает, я управляю всеми клиентами, смотрится конечно прикольно но все же (делал по M2H)

Тимур, оно так и есть. Клиенты посылают только запросы на исполнение действий, а сервер уже всем рулит.

den 26.07.2010 00:13

Ответ: Фак по Юнити.
 
Цитата:

у меня не правильно работает, я управляю всеми клиентами, смотрится конечно прикольно но все же (делал по M2H)
у меня тоже: сервер всемиклиентами управляет.
Делал как рах расказывал:
Цитата:

1. Сначала нужно создать сервер Network.InitializeServer(...);
2. Все клиенты подключаются с помощью Network.Connect(...);
3. У каждого сетевого игрока должен быть создан кубик с компонентом NetworkView, который будет передавать данные, в параметрах которого нужно указать переменной observed компонет, данные которого нужно передавать по сети (в нашем случае компонент с пометкой Transform)
4. Построить приложение и проверить.
У меня две сцены:
1)С двумя кнопочками-сервер и клиент. По нажатию на сервет выполняется Network.InitializeServer и загружается 2 сцена, при нажатии на клиент выполняется Network.Connect и загружается 2 сцена.
2)Прсто один шарик с управлением, и с компонентом NetworkView, где в пункте observed выбран онже(шарик).
Что я делаю не так?
Короче как сделать штоб игрок присоеденялся, и для него создовался отдельный шарик, и каждый игрок упровляет своим шаром.

ffinder 26.07.2010 00:37

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 156161)
Короче как сделать штоб игрок присоеденялся, и для него создовался отдельный шарик, и каждый игрок упровляет своим шаром.

Никто не читает то что я пишу...
Еще раз:
Объекты создаются с помощью NetworkInstantiate на сервере и их копии на всех подключенных клиентах. Клиенты шлют запросы на свои действия через RPC (RemoteProcedureCall). Сервер в ответ двигает или не двигает кубики, в зависимости от ситуации. Изменения автоматически отсылаются клиентам. Всё.

den 26.07.2010 01:02

Ответ: Фак по Юнити.
 
Цитата:

Объекты создаются с помощью NetworkInstantiate на сервере и их копии на всех подключенных клиентах.
Это прописать в после нажатия кнопок Сервер Клиент, или в игровой сцене?
И в NetworkInstantiate один из параметров-префаб. У меня префаб состоит из шарикаи камеры к нему прикреплённой. Как засунуть это в параметр функции?
Цитата:

Клиенты шлют запросы на свои действия через RPC (RemoteProcedureCall). Сервер в ответ двигает или не двигает кубики, в зависимости от ситуации. Изменения автоматически отсылаются клиентам.
Можно поподробней:)

pax 26.07.2010 11:56

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 156103)
2) А как всётаки импортировать модельформата .max в юнити, не конвертирую её в .fbx?

Без макса - невозможно. Любые проги, которые открывают файлы Max для просмотра (типа Deep Exploration) используют для этого сам макс. Юнити не исключение.

А по поводу сети, я подсказать не могу, с ней еще не работал, нет достаточных знаний. Как займусь в бомберсах делать мультиплеер, так и изучу материал.

den 26.07.2010 12:42

Ответ: Фак по Юнити.
 
А всё, я нашёл то что мне надо!
http://unity3d.ru/distribution/viewt...hp?f=11&t=2220

den 26.07.2010 14:09

Ответ: Фак по Юнити.
 
А чей IP надо прописывать в функциях? Сервера или клиента? И как его узнать (просто их несколько бывает)
-----------------------
И как сделать штоб у каждый игрок видел через свою камеру?
Я делал у префаба кубика камеру, а в итоге оба игрока смотриле через камеру клиента...

Fatalix3d 26.07.2010 18:13

Ответ: Фак по Юнити.
 
Парни прошу помогите нам с сетью сделали на работе сетевой шутер ага типа))), но вот в сети начали играть и один фиг друг друга как бы видим но каждый видит свое в общем играло 6 человек и у каждого виделись свои кординаты игроков которые не соответствовали реальности и игрок управлял ими, в общем полная каша.


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

den 26.07.2010 23:10

Ответ: Фак по Юнити.
 
Да, был бы признателен, если ктонибуть написал тутор по сетям (желатель бы есчё описать MasterServer).
И вытоге чтоб получилась простенькая игра с передвижением кубика (чтою у каждого игрока был свой кубик и своя камера).

den 27.07.2010 23:51

Ответ: Фак по Юнити.
 
А вот ещё пара новых вопросов:
1) Как нарисовать 2д примитивы?
2)Как передвинуть, отмасштабировать и повернуть 2д текстуру? (Texture2D)
3) Как рисовать прямо на матерьяле/текстуре?

pax 28.07.2010 11:20

Ответ: Фак по Юнити.
 
1) Например так правда нужно при этом рендерить отдельной ортографической камерой, установенной в нужные координаты.
2) Если рисуешь с помощью GUI.DrawTexture или любого другого метода GUI, то это должно помочь
3) Либо с помощью камеры в RenderTexture либо с помощью Texture2D.SetPixels но нужно, чтобы текстура была не сжатого формата. В справке все написано.

den 28.07.2010 13:21

Ответ: Фак по Юнити.
 
А вот действительно важный для меня вопрос:
Как сделать зум камере (короче приближение), аналог CameraZoom в блитце

pax 28.07.2010 13:50

Ответ: Фак по Юнити.
 
Меняй Field of view камеры, если я правильно понял о чем ты.

den 28.07.2010 14:14

Ответ: Фак по Юнити.
 
Цитата:

Меняй Field of view камеры, если я правильно понял о чем ты.
Нее, это не то, это вобще по мойму угол обзора!:)
А мне надо приближение сделать, ну например кагбутто через биноколь смотриш.

pax 28.07.2010 14:19

Ответ: Фак по Юнити.
 
Ну уменьши угол обзора до 15-10 единиц, будет тебе зум ;)

den 28.07.2010 14:29

Ответ: Фак по Юнити.
 
Цитата:

Ну уменьши угол обзора до 15-10 единиц, будет тебе зум
а я наоборот увеличивал, иизображение кривое делалось...
спасибо!

den 28.07.2010 23:06

Ответ: Фак по Юнити.
 
Есчё один немного глупый вопрос:) :
т.к. я плохо знаю буржуйский, а промт переводит не понятно, то спрошу вас:
в Юнити есть рагдол виззарт (ГамеОбъект-КреатеОвер-Рагдол), и там появляется список частей тела, можете мне расказать что это за части по русски, а то сделал рагдола, а он ...:-D :-D :-D

pax 28.07.2010 23:31

Ответ: Фак по Юнити.
 
Я сам не пробовал, но в FPS туториале есть небольшое описание:
Цитата:

Ragdolls
Регдолл имитирует настоящую скелетную структуру, позволяя персонажу (нашему роботу) реалистично падать при смерти.
  • Сначала создайте новую сцену. Мы настроим регдолл здесь. Не забудьте сохранить текущую сцену.
  • Создайте куб больших размеров. Он будет служить платформой для робота. Перетащите робота в сцену и расположите на кубе.
  • Удалите компонент Animation. Это важно, иначе анимация будет конфиликтовать с физикой.
  • Используйте мастера создания регдолла: Game object→Create Other→Ragdoll
В появившемся диалоговом окне нужно назначить все кости на нужные слоты. Мы назначим кости, перетаскивая значения из Robot на нужные слоты. Раскройте объект Robot в Hierarchy.
  • Сначала, rootHandle назначаем на root.
  • Установите Total Mass на 4.
LEGS
  • upleg_L на Left Hip.
  • lowleg_L на Left Knee.
  • heel_L на Left Foot.
  • Повторите для правой ноги.
Upper body / Arms
  • upArm_L на Left Arm.
  • elbow_L на Left Elbow.
  • Повторите для правой руки.
  • spine 3 на Middle spine.
  • head на Head.
  • Нажмите Create. Затем запустите игру. Робот упадёт. Однако, пушка не упадёт.
Для создания падения пушки:
  • Выберите gun в Hierarchy.
  • Добавьте Rigidbody.
  • Добавьте Box Collider. Настройте размер коллайдера для
соответствия с пушкой.


den 28.07.2010 23:52

Ответ: Фак по Юнити.
 
Спасибо, но мне нужно для своей модели, прсто перевод понятный нужен;)

pax 29.07.2010 00:00

Ответ: Фак по Юнити.
 
Ну по примеру:
  • root - обычно тазовая кость у скелета, т.е. начало координат скелета
  • Left Hip - Левое бедро
  • Left Knee - Левая голень
  • Left Foot - Левая стопа
  • Left Arm - Левая верхняя часть руки
  • Left Elbow - Левое предплечие
  • Middle spine - Средняя кость спины
  • Head - Голова

den 29.07.2010 00:07

Ответ: Фак по Юнити.
 
Спасибо, то что надо!:)

Fatalix3d 30.07.2010 00:34

Ответ: Фак по Юнити.
 
Pax не мог бы ты обьяснить как избавиться от лагов в сети, и немного про анимацию опять таки для сетевого режима.

Illidan 30.07.2010 04:01

Ответ: Фак по Юнити.
 
для вызова компонента из ГО используется GetComponent(). А можно ли получить ГО если известен компонент?
И если не затруднит расскажите плиз о работе с тегами обьектов. что это и как это естса.

pax 30.07.2010 13:00

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Fatalix3d (Сообщение 156638)
Pax не мог бы ты обьяснить как избавиться от лагов в сети, и немного про анимацию опять таки для сетевого режима.

Для избавления от лагов нужно использовать интерполяцию с задержкой по времени, пример из Networking Example с оффсайта (NetworkInterpolatedTransform):
PHP код:

using UnityEngine;
using System.Collections;

public class 
NetworkInterpolatedTransform MonoBehaviour {
    
    
// временная задержка для интерполяции
    
public double interpolationBackTime 0.1
    
    
internal struct  State
    
{
        
internal double timestamp;
        
internal Vector3 pos;
        
internal Quaternion rot;
    }

    
// Сохраняем 20 состояний с информацией "для воспроизведения"
    
State[] m_BufferedState = new State[20];
    
// сколько состояний используется
    
int m_TimestampCount;
    
    
void OnSerializeNetworkView(BitStream streamNetworkMessageInfo info)
    {
        
// Всегда отсылаем трансформ 
        
if (stream.isWriting)
        {
            
Vector3 pos transform.localPosition;
            
Quaternion rot transform.localRotation;
            
stream.Serialize(ref pos);
            
stream.Serialize(ref rot);
        }
        
// Когда принимаем - буфферизируем информацию
        
else
        {
            
// Принимаем последнее состояние
            
Vector3 pos Vector3.zero;
            
Quaternion rot Quaternion.identity;
            
stream.Serialize(ref pos);
            
stream.Serialize(ref rot);
            
            
// Смещаем данные в буфере на 1
            
for (int i=m_BufferedState.Length-1;i>=1;i--)
            {
                
m_BufferedState[i] = m_BufferedState[i-1];
            }
            
            
// сохраняем полученные данные под нулевым индексом
            
State state;
            
state.timestamp info.timestamp;
            
state.pos pos;
            
state.rot rot;
            
m_BufferedState[0] = state;
            
            
// увеличиваем количество сохраненных состояний, но не больше количества слотов
            
m_TimestampCount Mathf.Min(m_TimestampCount 1m_BufferedState.Length);

            
// проверяем целостность данных
            
for (int i=0;i<m_TimestampCount-1;i++)
            {
                if (
m_BufferedState[i].timestamp m_BufferedState[i+1].timestamp)
                    
Debug.Log("State inconsistent");
            }
            
            
//Debug.Log("stamp: " + info.timestamp + "my time: " + Network.time + "delta: " + (Network.time - info.timestamp));
        
}
    }
    
    
// Работает только когда компонент включен, т.е. на удаленных соединениях (server/clients)
    
void Update () {
        
double currentTime Network.time;
        
double interpolationTime currentTime interpolationBackTime;
        
// Ищем промежуток, подходящий по отложенному времени
        
if (m_BufferedState[0].timestamp interpolationTime)
        {
            for (
int i=0;i<m_TimestampCount;i++)
            {
                if (
m_BufferedState[i].timestamp <= interpolationTime || == m_TimestampCount-1)
                {
                    
// два состояния, в промежуток которых попадает времяя
                    
State rhs m_BufferedState[Mathf.Max(i-10)];
                    
                    
State lhs m_BufferedState[i];
                    
                    
// промежуток времени между состояниями
                    
double length rhs.timestamp lhs.timestamp;
                    
float t 0.0F;
                    
// интерполирующая переменная
                    
if (length 0.0001)
                        
= (float)((interpolationTime lhs.timestamp) / length);
                    
                    
// интерполируем трансформации
                    
transform.localPosition Vector3.Lerp(lhs.posrhs.post);
                    
transform.localRotation Quaternion.Slerp(lhs.rotrhs.rott);
                    return;
                }
            }
        }
        
// для экстраполяции используем последнее полученное значение
        
else
        {
            
State latest m_BufferedState[0];
            
            
transform.localPosition latest.pos;
            
transform.localRotation latest.rot;
        }
    }


Для синхронизации анимаций там же найдете пример Networking Scripts\NetworkSyncAnimation


Цитата:

Сообщение от Illidan (Сообщение 156647)
для вызова компонента из ГО используется GetComponent(). А можно ли получить ГО если известен компонент?
И если не затруднит расскажите плиз о работе с тегами обьектов. что это и как это естса.

У всех компонентов есть свойство gameObject, которое указывает на объект, к которому прикреплен компонент.

Тэги помогают разделить объекты при поиске. Особенно, если им не назначен компонент, по которому можно определить тип объекте в сцене. Например хочется указать места, в которых время от времени будут появляться бонусы. Мы создаем тэг с названием "Bonus" и создаем пустые GameObject'ы и назначаем им этот тэг. Далее какой-то скрипт управляющий появлением бонусов находит все эти объекты с помощью функции GameObject.FindGameObjectsWithTag и создает в этих местах эти бонусы.

den 30.07.2010 19:39

Ответ: Фак по Юнити.
 
У меня два похожих вопроса, которые скорей всего решаются функцией GetComponent() но я точно не пойму как:
1) У ГО имеится 3д источник звука (Audio Source ) как в скрипет тогоже ГО написать, чтобы когда надо он включался, а когда, надо выключался?
2) Тоже самое, но только у ГО имеется например 4 скрипта - "Самолёт","Машина","Лодка","Главный" . "Главный" всегда включен, как в нём прописать чтобы какой либо из этих скриптов включался/выключался ?

pax 30.07.2010 20:00

Ответ: Фак по Юнити.
 
1) this.audio.enabled = false;
2) this.GetComponent<Самолёт>().enabled = false; или this.gameObject.GetComponent<Самолёт>().enabled = false;

den 30.07.2010 21:48

Ответ: Фак по Юнити.
 
хех, спасибо! сколько раз уже выручал!
------
Цитата:

this.audio.enabled = false;
А если у ГО несколько источников?
То так чтоли -
Код:

this.GetComponent<3дМузончик№1>().enabled = false;
this.GetComponent<3дМузончик№2>().enabled = false;
this.GetComponent<3дМузончик№3>().enabled = false;

???
--------
И сюда же: как выключить/включить гравитацию о ГО?

pax 30.07.2010 22:02

Ответ: Фак по Юнити.
 
Тогда вот так:
PHP код:

AudioSource[] музончики = (AudioSource[]) GetComponents(typeof (AudioSource));
foreach (
AudioSource музон in музончики)
{
    
музон.enabled false;


А по поводу графитации, то она включается/отключается у твердого тела, а не у GO:
PHP код:

this.rigidbody.useGravity false


den 30.07.2010 22:05

Ответ: Фак по Юнити.
 
А на счёт гравитации сам понял:
Код:

Rigidbody.useGravity = false;
Rigidbody.useGravity = true;


den 31.07.2010 13:15

Ответ: Фак по Юнити.
 
Как сделать глобальные переменные, штоб их было видно из любого скрипта либого ГО ??

pax 31.07.2010 15:42

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 156834)
Как сделать глобальные переменные, штоб их было видно из любого скрипта либого ГО ??

PHP код:

public class GlobalVars
{
     
// глобальная переменная )
     
public static float globalFloat 123.456f;


обращение так:

PHP код:

public class Script:MonoBehaviour
{
     public 
void Start()
     {
         
GlobalVars.globalFloat 234.567f;
     }



den 31.07.2010 15:53

Ответ: Фак по Юнити.
 
PHP код:

private var :boolean =true;
function 
Update () {
if(
Input.GetAxis("Perekl") && n==falsen=true;
if(
Input.GetAxis("Perekl") && n==truen=false;
if(
n==true)
{
    
this.GetComponent(Car).enabled true;
    
this.GetComponent(Vertolet).enabled false;
}
if(
n==false)
{
    
this.GetComponent(Car).enabled false;
    
this.GetComponent(Vertolet).enabled true;
}
print(
n);


Почему тупит?
При нажатии на E (Perekl) переменная становится false, а при следующих нажатиях не меняется...:(

pax 31.07.2010 22:40

Ответ: Фак по Юнити.
 
JavaScript... ну ка почему такой вопрос в разделе по C#?
Во первых для кнопок с такой проверкой я бы использовал Input.GetAxisRaw а не Input.GetAxis, т.к. последняя возвращает сглаженное значение.
И писал бы не так...
PHP код:

private var :boolean =true
var 
lastInputfloat 0;
function 
Update () { 
var 
input Input.GetAxisRaw("Perekl");

// когда у нас происходит нажатие в положительную сторону оси
// нам надо поймать это нажатие.
if(lastInput input n=!n
lastInput input;

if(
n

    
this.GetComponent(Car).enabled true
    
this.GetComponent(Vertolet).enabled false

else

    
this.GetComponent(Car).enabled false
    
this.GetComponent(Vertolet).enabled true

print(
n); 


Либо я бы вообще использовал Input.GetKeyDown() для ловли нажатия кнопки.

UPD: И вообще обновлять в каждом кадре состояния компонентов это изврат. Сделай хотя бы так:
PHP код:

private var :boolean =true
var 
lastInputfloat 0;
function 
Update () { 
var 
input Input.GetAxisRaw("Perekl");

// когда у нас происходит нажатие в положительную сторону оси
// нам надо поймать это нажатие.
if(lastInput input 
{
    
n=!n;
    
this.GetComponent(Car).enabled n
    
this.GetComponent(Vertolet).enabled = !n

lastInput input;
print(
n); 


UPD2: кстати что это за машина-вертолет?

den 31.07.2010 23:18

Ответ: Фак по Юнити.
 
Цитата:

JavaScript... ну ка почему такой вопрос в разделе по C#?
А кстате о переводах, как это будет на JS, а то я C# вобще не шарю...

pax 31.07.2010 23:20

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 156886)
А кстате о переводах, как это будет на JS, а то я C# вобще не шарю...

Аналогично я не шарю в JS ;)
Но на сколько я понимаю так же должно использоваться ключевое слово static при объявлении переменной.

Вот похоже пример

den 31.07.2010 23:31

Ответ: Фак по Юнити.
 
Цитата:

UPD2: кстати что это за машина-вертолет?
Да я онлай игрушку забабахать хочю!
Там Машина стреляет ракетами, ездиет как машина, при нажатие на Е-у неё появляются лопости, и управление меняется на вертолётное.

pax 31.07.2010 23:33

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 156888)
Да я онлай игрушку забабахать хочю!
Там Машина стреляет ракетами, ездиет как машина, при нажатие на Е-у неё появляются лопости, и управление меняется на вертолётное.

Жуть какая :4to:

den 01.08.2010 22:22

Ответ: Фак по Юнити.
 
Я насчёт сетей.
Вот делаю сетевую игру.
Запускаю сразу 2 окна - буду проверять две машинки - все нормально работает, едёт. При нажатии на Е машинка превращается в вертолёт (лопости появляются) и управление становится вертолётное. С упровление всё норм. Но вот лопости появлюутся у всех машин, на том экране где есть летающая машинка, на другом экране-их вобще нету:-D
В чём дело? (лопости-это часть машины префаба-простов нужный момент они становятся видимыми/невидимыми)

pax 01.08.2010 22:41

Ответ: Фак по Юнити.
 
Нужно писать RPC функцию, которой передавать наверное до кучи NetworkViewId. Эта функция должна включать отображение лопостей. В ней надо сначала сделать проверку на NetworkViewId и если он совпадает, то скрыть/отобразить лопости.
При нажатии на кнопку E вызывать эту функцию для всех игроков.

den 01.08.2010 22:51

Ответ: Фак по Юнити.
 
Цитата:

Нужно писать RPC функцию, которой передавать наверное до кучи NetworkViewId. Эта функция должна включать отображение лопостей. В ней надо сначала сделать проверку на NetworkViewId и если он совпадает, то скрыть/отобразить лопости.
При нажатии на кнопку E вызывать эту функцию для всех игроков.
можно чюточку поподробней
------------------------------
А что надо для онлайн ракеты? только Network View ? или тоже функцию писать надо...
Блин, с ракетами такаяже трабла...
Что делать:''((

pax 02.08.2010 01:20

Ответ: Фак по Юнити.
 
Подробнее сам еще не касался этой темы. Какой выбран принцип работы сети? Сервер рулит или нет? Или какой-то частью сервер распоряжается? Чтобы разобраться - надо разобрать подробно два примера работы сети, тот который я описал и тот в котором рулит сервер. Кто-то хотел рассказать как этот пример работает ;)

Думаю ракета должна управляться только сервером и с него рассылать причиненные повреждения. Чтобы ракета управлялась сервером, нужно создать RPC функцию, которая вызывается только на сервере. Т.е. вызывать ее с параметром Server или если текущим пользователем является сервер, то вызывать функцию создания ракеты напрямую.

Кто будет управлять ракетой - зависит от того у кого будет вызвана функция Network.Instantiate().

den 02.08.2010 01:25

Ответ: Фак по Юнити.
 
Цитата:

Кто будет управлять ракетой - зависит от того у кого будет вызвана функция Network.Instantiate().
так я вызываю эту функцию, а рокета у всех игроков появляется одновреммено. Я даже не пойму как сделать чтоб нормально работало.

pax 02.08.2010 09:43

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 156987)
так я вызываю эту функцию, а рокета у всех игроков появляется одновреммено. Я даже не пойму как сделать чтоб нормально работало.

Ну тут без кода не разберешь, вызвать функцию пол беды, важно где вызывается функция.

den 02.08.2010 12:04

Ответ: Фак по Юнити.
 
УРААААААА! С ракетами всё ништяк!!! Я просто скрипт создание ракеты повесил на левел игры:-D , и чють чуть изменил его!
Осталось трабла с лопостями. Но думую так же решу и лопости.
------------------------------------------------------------------------------
А как передать и принять какое нибудь данное по сети (строку, число ...)

pax 02.08.2010 14:47

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 156993)
А как передать и принять какое нибудь данное по сети (строку, число ...)

RPC
Смотри пример чата.

den 02.08.2010 15:39

Ответ: Фак по Юнити.
 
Как у Transform выключить прорисовку(ренлер, сделать невидимым).
Я зная только как у Renderer - но нужно имеено у Transform

pax 02.08.2010 16:38

Ответ: Фак по Юнити.
 
так еще раз подробнее, что значит "у Transform прорисовку"? Какое отношение трансформ имеет к прорисовке? Если нужно скрыть модель, то нужно отключить все рендереры модели. Для этого нужно перебрать все чайлды трансформа, у геймобжектов найти все рендереры и отключить их.

PHP код:

public static void SetRenderer(Transform transbool val)
    {
        if (
trans.gameObject.renderer!=null)
        {
            
trans.gameObject.renderer.enabled val;
        }

        for (
int i 0trans.GetChildCount(); i++)
        {
            
SetRenderer(trans.GetChild(i), val);
        }
    } 


den 02.08.2010 17:20

Ответ: Фак по Юнити.
 
Почему в сети иногда чуть-чуть не совпадает координаты: ( гдето 0,1-0,5) машины и её двойника на экране соперника?
Network View глючит?

Fatalix3d 02.08.2010 19:32

Ответ: Фак по Юнити.
 
Den а ты как с тормозами боролся? В сети?

pax 02.08.2010 19:41

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 157017)
Почему в сети иногда чуть-чуть не совпадает координаты: ( гдето 0,1-0,5) машины и её двойника на экране соперника?
Network View глючит?

А ты это как замечаешь? Координаты на экране отображаешь?
Все разности координат бывают из-за задержек в передаче данных по сети.

den 02.08.2010 21:25

Ответ: Фак по Юнити.
 
Цитата:

А ты это как замечаешь? Координаты на экране отображаешь?
нет, просто иногда столкновения происходят чуть-чуть поразному, на разных экранах.


Часовой пояс GMT +4, время: 11:19.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot