Пятница, 27 Декабря 2024, 03:01

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • NoterstoneДата: Понедельник, 29 Октября 2018, 20:28 | Сообщение # 8681
    участник
    Сейчас нет на сайте
    Цитата Yanfire ()
    Просто тема игровых сохранений в отдельный файл - это для меня темный лес, т.к. я раньше вообще с ней не сталкивался. PlayerPrefs вполне хватало, но сейчас, нужен именно файл.

    Многие разработчики практикуют такое: сохранение делают в json формате и записывают его в стринг - стринг уже записывают в PlayerPrefs. Можно узнать необходимость сохранения в отдельный файл? Для опыта или для конкретной задачи?)
    YanfireДата: Вторник, 30 Октября 2018, 16:56 | Сообщение # 8682
    был не раз
    Сейчас нет на сайте
    Цитата Noterstone ()
    Можно узнать необходимость сохранения в отдельный файл? Для опыта или для конкретной задачи?)

    И для того и для другого. Просто ранее мне хватало PlayerPrefs, т.к. надо было сохранить всего несколько параметров(кол-во монет, макс. рекорд ну и т.д.). Сейчас же у одного главного героя параметров 10, не считая координат и ротации. А помимо него нужно сохранять все параметры врагов, лута и т.д. Просто сохранение в отдельный файл позволяет проще сделать это. Вначале я пробовал делать, через бинарные файлы, но как-то не получалось, да и происходящие в коде манипуляции я с трудом понимал(почти не понимал), с json та же история. В xml все структурировано, понятно и компактно. Сделал уже все, кроме непосредственно присвоения записанных значений.

    Добавлено (03 Ноября 2018, 20:15)
    ---------------------------------------------
    Ребят осталась одна проблема в процессе сохранения. Точнее загрузки сохранения.

    Вообщем, когда игра загружается, создаётся персонаж из папки где хранятся префабы загружаемых объектов и получает сохраненные значения. Но у персонажа есть куча разных переменных по типу: иконка HP, экран смерти и т.д. Их можно без проблем повесить на персонажа в редакторе и при первом запуске сцены, все будет работать, но при загрузке сохранения создаётся персонаж из префаба, у которого поля с этими переменными пустые и следовательно игра крашиться.

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

    Внимание вопрос: Как инициализировать неактивные объекты на сцене?

    Сообщение отредактировал Yanfire - Вторник, 30 Октября 2018, 16:57
    vampir0305Дата: Суббота, 03 Ноября 2018, 20:36 | Сообщение # 8683
    Unity C# Programmer
    Сейчас нет на сайте
    Yanfire, Очень просто. Создаёшь в сцене объект "Контроллер" с тегом "Controller" в который все нужные префабы, иконки и т.д. засовываешь.
    Когда игрок создался, он находит по тегу этот "Контроллер" и его значения присваивает в свои. Или наоборот, контроллер находит игрока и свои значения передаёт ему. Пример:
    Controller
    Код
    public GameObject ikonkaHP;

    В Start игрока:
    Код

    public GameObject ikonkaHP;

    controller = GameObject.FindGameObjectWithTag("Controller").GetComponent<Script>();
    ikonkaHP = controller.ikonkaHP;


    Красочная сюжетно-ориентированная игра-головоломка
    ZeroCoolДата: Понедельник, 26 Ноября 2018, 16:25 | Сообщение # 8684
    почетный гость
    Сейчас нет на сайте
    А что стандартные ассеты в новой версии выпилили? Или сейчас как то по другому? К примеру куда подевался фёрст персон плеер со всем настроенным? Деревья там, блики солнца, шейдеры, да много чего интересного было.

    seamanДата: Пятница, 30 Ноября 2018, 21:13 | Сообщение # 8685
    старожил
    Сейчас нет на сайте
    Когда качаешь Юнити не забывай соответствующие галочки ставить...
    ZeroCoolДата: Вторник, 04 Декабря 2018, 13:27 | Сообщение # 8686
    почетный гость
    Сейчас нет на сайте
    Цитата seaman ()
    Когда качаешь Юнити не забывай соответствующие галочки ставить...

    Так как раз в новой версии(не бета) ассеты отсутствуют. а в предыдущей есть.


    drcrackДата: Вторник, 04 Декабря 2018, 14:12 | Сообщение # 8687
    старожил
    Сейчас нет на сайте
    в новых версиях они вроде в window → package manager переехали и ставятся куда-то отдельно, не в папку проекта
    zrt56Дата: Суббота, 26 Января 2019, 22:06 | Сообщение # 8688
    уже был
    Сейчас нет на сайте
    Подскажите, пожалуйста! Есть куб , через него проходят объекты, за это начисляются монеты, как их переделать в другой скрипт, на другом объекте?
    web_sstasДата: Воскресенье, 27 Января 2019, 08:20 | Сообщение # 8689
    частый гость
    Сейчас нет на сайте
    zrt56, примерно так,
    Код

    OtherScript os = GameObject.FindGameObjectWithTag("OtherObject").GetComponent<OtherScript>();
    void OnTriggerEnter(Collider other){
    os.AddCoin();
    }
    mr_carlos0000Дата: Четверг, 31 Января 2019, 15:48 | Сообщение # 8690
    уже был
    Сейчас нет на сайте
    нужна помощь в написании скрипта для сбора ресурсов юнитами
    необходимо чтобы юниты собирали-добывали указанный ресурс
    при выделении одного или нескольких юнитов он или они шли например к дереву и рубили его или к шахте и таскали золото в замок
    как в WarCraft 3 blink
    drcrackДата: Четверг, 31 Января 2019, 16:17 | Сообщение # 8691
    старожил
    Сейчас нет на сайте
    чет походу тебе не помощь нужна а человек который за тебя напишет игру :D
    mr_carlos0000Дата: Четверг, 31 Января 2019, 16:19 | Сообщение # 8692
    уже был
    Сейчас нет на сайте
    блин я просто даже не знаю как написать этот скрипт
    drcrackДата: Четверг, 31 Января 2019, 16:21 | Сообщение # 8693
    старожил
    Сейчас нет на сайте
    да там не один скрипт нужен а десять, с таким опытом на варкрафт 3 рановато замахиваться
    напиши тетрис для начала
    или книжку какую почитай
    это тема для конкретных вопросов, а не "как сделать игру"
    t111Дата: Суббота, 02 Февраля 2019, 19:21 | Сообщение # 8694
    почетный гость
    Сейчас нет на сайте
    Здравствуйте. Мне нужна помощь, как в юнити реализовать перемотку видео в обратную сторону? Например, если жму Влево, то назад играет, если Вправо, то вперед. Попытался при нажатии Влево убавлять кадры (videoplayer.frame --) , работает, но рывками.
    В мануале написано что это можно реализовать в юнити напрямую, но не на всех платформах. Скажите, кто знает, о каких платформах идет речь? Делаю на комп, мощнее и не придумаешь. Может речь о формате видео? Тогда, какого формата оно должно быть?
    Еще есть вариант один, загрузить одно видео нормальное и одно уже с воспроизведением в обратную сторону, начать их вместе проигрывать, и в нужный момент переключать видимость видео в сцене, но не могу додумать, как реализовать, чтобы именно начиналась отмотка с того же самого кадра,ведь видео идут в рассихрон.


    как известно, встречают по
    одежке, а провожают
    uninstall'ом"

    drcrackДата: Суббота, 02 Февраля 2019, 20:08 | Сообщение # 8695
    старожил
    Сейчас нет на сайте
    Цитата
    Еще есть вариант один, загрузить одно видео нормальное и одно уже с воспроизведением в обратную сторону, начать их вместе проигрывать, и в нужный момент переключать видимость видео в сцене, но не могу додумать, как реализовать, чтобы именно начиналась отмотка с того же самого кадра,ведь видео идут в рассихрон.

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


    Сообщение отредактировал drcrack - Суббота, 02 Февраля 2019, 20:09
    DonakiDijunkДата: Воскресенье, 10 Февраля 2019, 13:57 | Сообщение # 8696
    был не раз
    Сейчас нет на сайте
    Подскажите, в чем ошибка? isGrounded выдает false на поверхностях с любым типом коллизий.

    Код
    public class HeroMove : MonoBehaviour {

        CharacterController HeroCharacter;
        public float MinimalWalkSpeed, MaximalWalkSpeed;
        private float Speed;
        
        private float _gravity;

        void Start () {
      HeroCharacter = GetComponent<CharacterController>();
      //Прописываем скорости минимальное значение;
      Speed = MinimalWalkSpeed;
        }
        
        void Update () {
      MoveHero();
      GravityCheck();
      //Debug.Log(Speed);
      Debug.Log(HeroCharacter.isGrounded);
        }
        
      void GravityCheck(){
      //Гравитация;
      HeroCharacter.transform.position -= Vector3.down * _gravity;
      if(!HeroCharacter.isGrounded){
       _gravity -= 0.01f * Time.deltaTime;
      }
      if(HeroCharacter.isGrounded){
       _gravity = 0.0f;
      }
        }
        
        void MoveHero() {
      //Ускорение с минимальной скорости, до максимальной;
      if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.D)){
       if (Speed < MaximalWalkSpeed){
        Speed+= 0.7f*Time.deltaTime;
       }
      }
      //Бинд клавиш и движения;
      if (Input.GetKey(KeyCode.W)){
       HeroCharacter.transform.position += HeroCharacter.transform.forward * Speed * Time.deltaTime;
      }
      if (Input.GetKey(KeyCode.S)){
       HeroCharacter.transform.position -= HeroCharacter.transform.forward * Speed * Time.deltaTime;
      }
      if (Input.GetKey(KeyCode.A)){
       HeroCharacter.transform.position -= HeroCharacter.transform.right * Speed * Time.deltaTime;
      }
      if (Input.GetKey(KeyCode.D)){
       HeroCharacter.transform.position += HeroCharacter.transform.right * Speed * Time.deltaTime;
      }
        }
    }


    Как только не менял, но все равно пролетает сквозь объекты любым типом коллайдеров.


    Сообщение отредактировал DonakiDijunk - Воскресенье, 10 Февраля 2019, 13:59
    SkorpyXДата: Воскресенье, 10 Февраля 2019, 19:39 | Сообщение # 8697
    участник
    Сейчас нет на сайте
    DonakiDijunk, CharacterController следует двигать через Move(...) или SimpleMove(...).
    DonakiDijunkДата: Воскресенье, 10 Февраля 2019, 21:29 | Сообщение # 8698
    был не раз
    Сейчас нет на сайте
    Цитата SkorpyX ()
    DonakiDijunk, CharacterController следует двигать через Move(...) или SimpleMove(...).

    Поправил, все равно false.
    drcrackДата: Воскресенье, 10 Февраля 2019, 22:08 | Сообщение # 8699
    старожил
    Сейчас нет на сайте
    isGrounded нормально не работал вообще никогда, не работает и сейчас, нужно писать свою проверку
    IrbisДата: Понедельник, 11 Февраля 2019, 09:42 | Сообщение # 8700
    почетный гость
    Сейчас нет на сайте
    Заменил в вашем скрипте
    Код
    void GravityCheck(){
      //Гравитация;
      HeroCharacter.transform.position -= Vector3.down * _gravity;
      if(!HeroCharacter.isGrounded){
       _gravity -= 0.01f * Time.deltaTime;
      }
      if(HeroCharacter.isGrounded){
       _gravity = 0.0f;
      }
        }

    на
    Код
    void GravityCheck()
    {
        //Гравитация;
        if(!HeroCharacter.isGrounded)
        {
            _gravity -= 0.01f * Time.deltaTime;
            HeroCharacter.Move(Vector3.up * _gravity);
        }
        else
        {
            _gravity = 0.0f;
        }
    }

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


    Сообщение отредактировал Irbis - Понедельник, 11 Февраля 2019, 09:47
    Поиск:

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