Пятница, 26 Апреля 2024, 20:45

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » serezha [17]
Результаты поиска
serezhaДата: Понедельник, 20 Декабря 2021, 15:00 | Сообщение # 1 | Тема: Не работает строчка массива Transform [РЕШЕНО]
был не раз
Сейчас нет на сайте
Цитата drcrack ()
в любой нормальной IDE есть возможность как быстро перейти к реализации метода, так и вернуться обратно, так что крутить ничего не надо


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

Цитата drcrack ()
посмотрим на тебя через годик-другой


Я не один год занимаюсь написанием кода и уже давно проверено что размножение методов не лучший вариант! Спорить какой лучше цвет бессмысленно, так как каждый программист по своему пишит код как ему удобнее.

А если по делу, если хочешь реально помочь уважаемый знаток кода :D то тут тема актуальна

https://gcup.ru/forum/59-103628-1

потому что философия философией, но если сможешь реально помочь в этом вопросе буду очень признателен respect
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, про написание отдельного метода мне известно :D это самое первое что приходит на ум, видимо я не совсем правильно изложил свою мысль :) Размножение методов не подходит, так как опять добавляет лишние строки, плюс то что говорите "метод опускать ниже в коде чтобы в глаза не бросался" как раз и будет лишним действием опять крутить к низу кода чтобы вспомнить что туда засунул в это метод, а учитывая что если этих методов сотни, то это будет просто жесть... %)
Я имел ввиду чтобы участки кода разложить по полочкам в скрипте для легкого восприятия человеком, а когда отдельные куски кода находятся в разных методах как предлагаете, то тогда сложно "ловить" что куда чего отправляется или меняется, прыгая при чтении кода из одного места в другое...может размножение методов кому то и будет удобно, но не мне :)


Сообщение отредактировал 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. С чем это связано так и не понял... blink

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 в случае необходимости. Пересмотрел кучу уроков в интернете, но так и не удалось решить эту задачу. blink

код:
bulletInstance.GetComponent<Rigidbody> ().AddForce (GunPoint.transform.forward + cam.transform.forward * Speed);

bulletInstance - переменная в которой хранится префаб пули
GunPoint - точка спавна пули
cam - камера игрока, который делает выстрел
Speed - скорость пули со значением 5000
Форум игроделов » Записи участника » serezha [17]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг