Результаты поиска
| |
serezha | Дата: Понедельник, 20 Декабря 2021, 15:00 | Сообщение # 1 | Тема: Не работает строчка массива Transform [РЕШЕНО] |
был не раз
Сейчас нет на сайте
| Цитата drcrack ( ) в любой нормальной IDE есть возможность как быстро перейти к реализации метода, так и вернуться обратно, так что крутить ничего не надо
Я не про возможность автоматической прокрутке говорю, а про перемещение из одного участка в другой в плане читаемости кода человеком т.е. быстрого его понимания человеком.
Цитата drcrack ( ) посмотрим на тебя через годик-другой
Я не один год занимаюсь написанием кода и уже давно проверено что размножение методов не лучший вариант! Спорить какой лучше цвет бессмысленно, так как каждый программист по своему пишит код как ему удобнее.
А если по делу, если хочешь реально помочь уважаемый знаток кода то тут тема актуальна
https://gcup.ru/forum/59-103628-1
потому что философия философией, но если сможешь реально помочь в этом вопросе буду очень признателен
|
|
| |
serezha | Дата: Понедельник, 20 Декабря 2021, 14:54 | Сообщение # 2 | Тема: Как назначить или присвоить ID у компонента NetworkView |
был не раз
Сейчас нет на сайте
| Всем привет! Как назначить или присвоить ID у компонента NetworkView ?
Пробую разные варианты но выскакивают две ошибки:
View ID AllocatedID: 50 not found during lookup. Strange behaviour may occur Received state update for view id' AllocatedID: 50' but the NetworkView doesn't exist
Скрипт висит на префабе игрока-клиента и при появлении на сцене вроде должен автоматически назначить ID, но не работает:
Код private NetworkView netView;
void Awake() { netView = gameObject.AddComponent( typeof( NetworkView ) ) as NetworkView; - добавляем компонент NetworkView - РАБОТАЕТ netView.viewID = Network.AllocateViewID(); - назначаем ID в сети - ЭТО НЕ РАБОТАЕТ netView.observed = this; - указываем этот скрипт (компонент) для синхронизации - РАБОТАЕТ }
P.S. Когда вешаю компонент NetworkView на префаб игрока-клиента это работает, а когда тоже самое кодом то нет.
|
|
| |
serezha | Дата: Воскресенье, 19 Декабря 2021, 21:29 | Сообщение # 3 | Тема: Не работает строчка массива Transform [РЕШЕНО] |
был не раз
Сейчас нет на сайте
| Robinzon787, про написание отдельного метода мне известно это самое первое что приходит на ум, видимо я не совсем правильно изложил свою мысль Размножение методов не подходит, так как опять добавляет лишние строки, плюс то что говорите "метод опускать ниже в коде чтобы в глаза не бросался" как раз и будет лишним действием опять крутить к низу кода чтобы вспомнить что туда засунул в это метод, а учитывая что если этих методов сотни, то это будет просто жесть... Я имел ввиду чтобы участки кода разложить по полочкам в скрипте для легкого восприятия человеком, а когда отдельные куски кода находятся в разных методах как предлагаете, то тогда сложно "ловить" что куда чего отправляется или меняется, прыгая при чтении кода из одного места в другое...может размножение методов кому то и будет удобно, но не мне
Сообщение отредактировал serezha - Воскресенье, 19 Декабря 2021, 22:42 |
|
| |
serezha | Дата: Среда, 08 Декабря 2021, 18:45 | Сообщение # 4 | Тема: Не работает строчка массива Transform [РЕШЕНО] |
был не раз
Сейчас нет на сайте
| Цитата Instantiate(PlayerKubik, arrayOfSpawnPoints[Random.Range(0, arrayOfSpawnPoints.Length)].position, Quaternion.identity); DmitriyIM, спасибо, строка работает! Кстати, я пытался в самом начале до создания темы делать команду и ставить в самый конец "Quaternion.identity", но юнька ругалась страшно))) я не догадался поставить ".position" перед поворотом.
Цитата drcrack ( ) простым способом наверно нельзя, по крайней мере ничего в голову сходу не приходит а зачем? ИМХО: Для удобства Просто заметил, что если изначально писать строчкой, а не в столбик то в скрипте, где например много команд, не придется долго крутить колесиком мыши или листать сбоку, чтобы модифицировать нужный участок кода т.е. 50 строк более лучше..я бы сказал эстетичней что ль смотрится:) чем 150 строк. В любом случае Всем большая благодарность, вопрос решен!
Сообщение отредактировал serezha - Среда, 08 Декабря 2021, 18:49 |
|
| |
serezha | Дата: Вторник, 07 Декабря 2021, 20:30 | Сообщение # 5 | Тема: Не работает строчка массива Transform [РЕШЕНО] |
был не раз
Сейчас нет на сайте
| drcrack, Спасибо большое! Как раз то что мне нужно! Еще хочу спросить, а можно ли это в одну строчку записать?
|
|
| |
serezha | Дата: Вторник, 07 Декабря 2021, 19:03 | Сообщение # 6 | Тема: Не работает строчка массива Transform [РЕШЕНО] |
был не раз
Сейчас нет на сайте
| Вот что сделал: public Transform[] arrayOfSpawnPoints, заполнил тремя GO пустышками в инспекторе. В public GameObject PlayerKubik перетащил GO куб в инспекторе. Для строки спавна в целях эксперемента назначил клавишу, когда нажимаю эту клавишу, то GO "PlayerKubik" спавнится только в точке элемента 0 Transform[] и так постоянно, всегда только в одной этой точке, а нужно чтобы и в других тоже спавнился. Перепробовал разные комбинации transform, но всё равно не работает.
Что не так я делаю в этой строчке массива Transform:
Instantiate (PlayerKubik, arrayOfSpawnPoints [Random.Range (0, arrayOfSpawnPoints.Length)]);
P.S. До этого вообще GO "PlayerKubik" проваливался сквозь землю.
Вопрос решен!
Сообщение отредактировал serezha - Среда, 08 Декабря 2021, 18:53 |
|
| |
serezha | Дата: Вторник, 23 Ноября 2021, 15:56 | Сообщение # 7 | Тема: [РЕШЕНО] Как сделать чтобы сигнал срабатывал у всех |
был не раз
Сейчас нет на сайте
| Здравствуйте! Уже второй день измучился над условием. В сетевой игре при подключении одного игрока регистрируется сигнал 1 и 2, а вот когда подключается второй игрок или третий, то никакого сигнала нет. Как сделать так чтобы сигнал срабатывал при подключении любого количества игроков, а не только у одного ?
Нашел решение: создал отдельную переменную счетчика и при спавне игрока прибавляю на еденицу. Оказалось что прибавлять нужно где команда создания игрока и проблема решилась
Код using System; using UnityEngine; using System.Text; using System.Collections;
public class Server : MonoBehaviour {
public GameObject PlayerPrefab; public bool serv; public string ip = "127.0.0.1"; public string port = "2800"; public bool connected; public GameObject go; public GameObject To; public int LE; public int LEK;
void Awake () { serv = false; LE = 0; LEK = 0; }
void Update () { if (serv == true & Network.connections.Length >= 1) { LE = + 1; } if (LEK != LE) { GetComponent<NetworkView>().RPC ("RpcIK", RPCMode.Others); Debug.Log("СИГНАЛ 1"); LEK = LE; } } [RPC] public void RpcIK () { Debug.Log("СИГНАЛ 2"); } void OnGUI () { if(GUI.Button(new Rect((Screen.width - 110)/2, Screen.height/2 + 35, 110, 30), "Создать сервер")) Network.InitializeServer(10, Convert.ToInt32(port), false); if (GUI.Button (new Rect ((Screen.width - 120) / 2, Screen.height / 7, 150, 30), "Войти")) Network.Connect (ip, Convert.ToInt32 (port)); } void OnServerInitialized () { serv = true; } void OnConnectedToServer () { CreatePlayer(); } void CreatePlayer () { connected = true; go = (GameObject)Network.Instantiate(PlayerPrefab, transform.position = To.transform.position, transform.rotation = To.transform.rotation, 1); } }
Сообщение отредактировал serezha - Воскресенье, 19 Декабря 2021, 22:52 |
|
| |
serezha | Дата: Четверг, 04 Марта 2021, 21:54 | Сообщение # 8 | Тема: [РЕШЕНО]Не правильно отображается надпись[РЕШЕНО] |
был не раз
Сейчас нет на сайте
| Всем привет! В сетевой игре у меня образовалась проблема:
Надпись "кто в кого попал", которую видят все клиенты-игроки, отображается не у всех одинаково. Дело в том, что у того клиента-игрока который стреляет у него надпись показывает что "враг сам убил себя", а у остальных клиентов-игроков все нормально. Нужно чтобы эта надпись была у всех одинаковая.
Вопрос решен!
Решил так: создал еще одну переменную у игрока-клиента по которому стреляют и туда записал с помощью Raycast кто стрелял.
Сообщение отредактировал serezha - Четверг, 02 Декабря 2021, 22:15 |
|
| |
serezha | Дата: Воскресенье, 21 Февраля 2021, 12:57 | Сообщение # 9 | Тема: [РЕШЕНО] Назначение в переменную определенного объекта |
был не раз
Сейчас нет на сайте
| drcrack Спасибо!
Цитата drcrack ( ) Создай поле в скрипте который на Humanoid и в инспекторе поставь Это самое первое что я делал...но забыл нажать в инспекторе кнопочку "Apply" т.е. применить изменения в префабе
Теперь все работает! А можно тоже самое сделать, только через код не используя инспектор?
Сообщение отредактировал serezha - Воскресенье, 21 Февраля 2021, 13:01 |
|
| |
serezha | Дата: Суббота, 20 Февраля 2021, 15:29 | Сообщение # 10 | Тема: [РЕШЕНО] Назначение в переменную определенного объекта |
был не раз
Сейчас нет на сайте
| Здравствуйте! Пытался разобраться в сетевой игре как каждому префабу игрока назначить в переменную определенный игровой объект, но ничего не выходит. Присваивал объект в переменную через "Find", но как я понял "Find" назначает первый попайвшийся совпадающий найденный объект из сцены, а в сетевой игре на сцене префабы игровых объектов имеют одинаковые имена, так как являются копиями экземпляра.
Вопрос. Как назначить переменной игровой объект "GunPoint", который игрок таскает всегда с собой?
Вот информация по объектам: Объект "GunPoint" - точка спавна пуль, "висит" на оружии "M4MB". Объект "M4MB" - оружие приклепленное к ладони правой руки игрового персанажа.
Все эти объекты прикреплены к персонажу и перемещаются вместе с ним, а сам персонаж "Humanoid" является префабом, который спавнится при присоединении к серверу.
Вопрос решен!
Сообщение отредактировал serezha - Четверг, 02 Декабря 2021, 22:25 |
|
| |
serezha | Дата: Пятница, 05 Февраля 2021, 21:18 | Сообщение # 11 | Тема: [РЕШЕНО] Создание префаба Объекта у другого игрока [РЕШЕНО] |
был не раз
Сейчас нет на сайте
| drcrack, Спасибо! Добавлено (05 Февраля 2021, 21:30) --------------------------------------------- 1) Всё отлично работает так: GameObject Kubik = (GameObject)Network.Instantiate (Cub, Player.transform.position, Player.transform.rotation, 1); Kubik.transform.position = Point.transform.position;
2) А вот так, создаются сразу 2 штуки куба: GameObject Kubik = (GameObject)Network.Instantiate (Cub, Point.transform.position, Point.transform.rotation, 1);
Из 2-го варианта по идеи..должен один куб создаваться, но у меня их сразу становится 2. С чем это связано так и не понял...
|
|
| |
serezha | Дата: Пятница, 05 Февраля 2021, 11:48 | Сообщение # 12 | Тема: [РЕШЕНО] Создание префаба Объекта у другого игрока [РЕШЕНО] |
был не раз
Сейчас нет на сайте
| Цитата drcrack ( ) в чем смысл вызова rpc в которой стоит проверка которая ограничивает ее владельцем обьекта? Смысл этой проверки в том, чтобы куб создался только у того игрока который нажал клавишу. Мне понятно что это проверка только по локальному игроку. Думаю к этой проверке нужно еще что то добавить в код, чтобы проверка была по сети.
Цитата drcrack ( ) а по проблеме, скорее всего надо так: Код GameObject Kubik = (GameObject)Network.Instantiate (Cub, Point.transform.position, Point.transform.rotation, 1);
а следующую строчку убрать Стало еще хуже, теперь куб создается у всех и у каждого игрока создается по 2 штуки
Сообщение отредактировал serezha - Пятница, 05 Февраля 2021, 12:02 |
|
| |
serezha | Дата: Четверг, 04 Февраля 2021, 21:08 | Сообщение # 13 | Тема: [РЕШЕНО] Создание префаба Объекта у другого игрока [РЕШЕНО] |
был не раз
Сейчас нет на сайте
| С одного клиента при нажатии на кнопку "Z" создается префаб куба. Если смотреть с других клиентов то они видят, что куб появляется не у того игрока, который нажимал кнопку.
Что нужно исправить в коде, чтобы игроки видели куб только у того игрока, который его создал?
код:
void Awake () { Point = Player.transform.GetChild (3).gameObject; Cub = Resources.Load("Cubik"); }
[RPC] public void RpcKubik() { if (GetComponent<NetworkView> ().isMine == true) { GameObject Kubik = (GameObject)Network.Instantiate (Cub, Player.transform.position, Player.transform.rotation, 1); Kubik.transform.position = Point.transform.position; } }
void Update () { if (Input.GetKeyDown (KeyCode.Z)) { GetComponent<NetworkView>().RPC("RpcKubik", RPCMode.All); } }
Player - префаб игрока Cub - префаб Куба Point - точка где появляется куб, является дочерним объектом у Player, перемещается вместе с игроком.
Вопрос решен!
Сообщение отредактировал serezha - Четверг, 02 Декабря 2021, 22:33 |
|
| |
serezha | Дата: Пятница, 29 Января 2021, 13:36 | Сообщение # 14 | Тема: Направление траектории пули |
был не раз
Сейчас нет на сайте
| Цитата drcrack ( ) С того что ты не можешь написать 1 строчку кода которая решает твою проблему? ну это точно не говорит о человеке, что он типа не знает куда команды вставлять! :D
С вектором направления это все понятно, но вот когда менял значение в windSpeed, как говорите что она смещает силой пулю. Почему то она меняет направление только в противоположные стороны или только опять под прямым углом...пытался делать чтобы пуля летела под углом 30 градусов и 15 градусов, но не получается, возможно я действительно что то упустил...
|
|
| |
serezha | Дата: Пятница, 29 Января 2021, 12:40 | Сообщение # 15 | Тема: Направление траектории пули |
был не раз
Сейчас нет на сайте
| Цитата Ranger ( ) bulletInstance.GetComponent<Rigidbody>().velocity += Vector3.right * windSpeed; Ranger, что-то код не поворачивает пулю на 30 градусов. right - поворачивает пулю на 90 градусов, а это не то что нужно.
Цитата drcrack ( ) По-хорошему ветер надо добавлять каждый FixedUpdate, а не один раз при запуске, он же постоянно на нее действует drcrack, это тут при чем??? С чего Вы вдруг решили что я не знаю как выполняются команды в FixedUpdate и других? Вы хоть прочитали мой вопрос в теме или просто не туда ответили?! :)
|
|
| |
serezha | Дата: Среда, 27 Января 2021, 19:01 | Сообщение # 16 | Тема: Направление траектории пули |
был не раз
Сейчас нет на сайте
| Да, пространство 3Д. Поправка на ветер для пули снайпера - Вы угадали :) это будет позже в игре, но сейчас я делаю пока что без ветра. Задача сводится к тому, как можно отклонять траекторию пули, просто изменяя значения в коде. Думаю вроде что то еще нужно добавить, дописать где то рядом с "forward", а вот что именно так и не разобрался
|
|
| |
serezha | Дата: Среда, 27 Января 2021, 17:20 | Сообщение # 17 | Тема: Направление траектории пули |
был не раз
Сейчас нет на сайте
| При нажатии кнопки выстрела создается префаб пули на сцене, затем добавляется сила которая толкает ее вперед (forward) с заданной скоростью. Как с помощью кода, повернуть пулю немного правее...градусов на 30, чтобы пуля также летела прямо от игрока, но при этом отклонилась немного в право? Или как сделать так, чтобы можно было с помощью числа в коде, регулировать отклонение пули вправо или влево по оси X в случае необходимости. Пересмотрел кучу уроков в интернете, но так и не удалось решить эту задачу.
код: bulletInstance.GetComponent<Rigidbody> ().AddForce (GunPoint.transform.forward + cam.transform.forward * Speed);
bulletInstance - переменная в которой хранится префаб пули GunPoint - точка спавна пули cam - камера игрока, который делает выстрел Speed - скорость пули со значением 5000
|
|
| |
|