Четверг, 28 Марта 2024, 23:06

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • AdomДата: Вторник, 19 Ноября 2013, 15:51 | Сообщение # 4961
    Печенька!
    Сейчас нет на сайте
    Как можно узнать с какой силой объект попал в игрока ?
    PoqXertДата: Вторник, 19 Ноября 2013, 16:06 | Сообщение # 4962
    постоянный участник
    Сейчас нет на сайте
    Данные для расчёта силы:
    rigidbody.velocity
    rigidbody.mass
    Формулы нагуглить не долго.


    Расширения для Unity3D
    Блог программиста - PoqXert.ru
    inventrixДата: Вторник, 19 Ноября 2013, 18:18 | Сообщение # 4963
    участник
    Сейчас нет на сайте
    Можно как то проверить столкновение без ригидбоди? Рейкаст себя странно ведет, объекты немного смещаются, чего быть как бы не должно...
    allodsДата: Вторник, 19 Ноября 2013, 19:43 | Сообщение # 4964
    почти ветеран
    Сейчас нет на сайте
    Цитата inventrix ()
    Можно как то проверить столкновение без ригидбоди? Рейкаст себя странно ведет, объекты немного смещаются, чего быть как бы не должно...


    OnTriggerEnter или OnCollisionEnter ...Stay... Exit
    inventrixДата: Вторник, 19 Ноября 2013, 21:43 | Сообщение # 4965
    участник
    Сейчас нет на сайте
    OnCollisionEnter он же проверяет только объекты с ригидбоди, счас Stay попробую

    Добавлено (19.11.2013, 21:09)
    ---------------------------------------------
    Ну и stay без ригидбоду отказался работать, не ужели в юнити нету команды для нахождения столкновений между не физическими объектами, бред какой то...

    Добавлено (19.11.2013, 21:43)
    ---------------------------------------------
    Подскажите, в таком случае, почему рейкаст немного по разному реагирует? Условие такое: пускаю луч в ту сторону куда едет куб1, луч встретил куб2 на растоянии 0.5, то стоим, останавливается куб1 всегда в разных местах, которые отличаются совсем чуть-чуть, но все же, хотелось бы что бы куб1 тормозил всегда на 1 расстоянии...

    allodsДата: Вторник, 19 Ноября 2013, 22:23 | Сообщение # 4966
    почти ветеран
    Сейчас нет на сайте
    можно чуть оттолкнуть объект если дистанция <1 пока дистанция не будет 1, но это немного извращение
    inventrixДата: Вторник, 19 Ноября 2013, 22:27 | Сообщение # 4967
    участник
    Сейчас нет на сайте
    Ну я вот так и подумал, вообще мне не понятна причина такого разного реагирования на 1 и то же действие, бесит уже прям!
    seamanДата: Вторник, 19 Ноября 2013, 23:44 | Сообщение # 4968
    старожил
    Сейчас нет на сайте
    Цитата
    не понятна причина

    Видимо причина в FixedUpdate. Физика в нем просчитывается.
    White9Дата: Среда, 20 Ноября 2013, 16:40 | Сообщение # 4969
    заслуженный участник
    Сейчас нет на сайте
    Вопрос отпал )

    Сообщение отредактировал White9 - Среда, 20 Ноября 2013, 16:48
    AmmokuДата: Пятница, 22 Ноября 2013, 23:10 | Сообщение # 4970
    частый гость
    Сейчас нет на сайте
    Возник такой вопрос:
    Есть пачка скриптов, WxLx
    где x - цыферки разные.
    Присоединяю кодом один из них.
    Что присоединять указано в другом объекте - "data".
    Код
    private var lvlinfo: data;

    function Start () {
          lvlinfo = GameObject.Find("data").GetComponent(data);
          gameObject.AddComponent ("W"+lvlinfo.world+"L"+lvlinfo.level);
    }

    Все присоединяется норм, но как теперь добыть переменные из WxLx?
    Пишу
    Код
    print(GetComponent("W"+lvlinfo.world+"L"+lvlinfo.level).level);

    Говорит что level не есть мембер W1L1, но я то точно знаю, что там есть такая переменная, и она точно public...


    Сообщение отредактировал Ammoku - Пятница, 22 Ноября 2013, 23:20
    allodsДата: Суббота, 23 Ноября 2013, 21:32 | Сообщение # 4971
    почти ветеран
    Сейчас нет на сайте
    только седня установил версию 4,3. Решил забилдить свой проект в апк но вылетает такая хрень, раньше никогда небыло

    Добавлено (23.11.2013, 19:45)
    ---------------------------------------------
    Я все поставил, но я не совсем понял что именно мне надо выставить и как

    Добавлено (23.11.2013, 19:49)
    ---------------------------------------------
    Пфф просто надо в BundleIdentifier поставит "сom." перед названием!
    к примеру ВасяКопмания > сом.ВасяКомпания

    Добавлено (23.11.2013, 21:32)
    ---------------------------------------------
    есть объект с ригд бади, нано узнать двигается он или нет? как можно получить его двигательность ? happy

    Сообщение отредактировал allods - Суббота, 23 Ноября 2013, 19:44
    PoqXertДата: Воскресенье, 24 Ноября 2013, 01:15 | Сообщение # 4972
    постоянный участник
    Сейчас нет на сайте
    rigidbody.velocity

    Расширения для Unity3D
    Блог программиста - PoqXert.ru
    error111Дата: Воскресенье, 24 Ноября 2013, 04:27 | Сообщение # 4973
    заслуженный участник
    Сейчас нет на сайте
    Туплю по следующему вопросу.
    Есть паблик класс в котором описан моб:

    Код
    public class Mob {
       private string _name;
       private int _attack;
         
       public Mob(){
        _name = "";
        _attack = 0;
       }
        public string Name{
        get{ return _name;}
        set{_name = value;}
       }
        public int Attack{
        get{ return _attack;}
        set{_attack = value;}
       }
    }

    public enum MobName{
       Rat,
       Bat,
       Slime,
       Goblin,
       Hound,
       Ghoul,
       Lizardman,
       Orc,
       Undead,
       Deamon,
    }

    public enum MobAttack : int{
       Rat = 1,
       Bat = 1,
       Slime = 2,
       Goblin = 3,
       Hound = 4,
       Ghoul = 5,
       Lizardman = 5,
       Orc = 6,
       Undead = 7,
       Deamon = 9,
    }


    Есть другой класс MobGenerator, который будет висеть на объекте в сцене и на старте генерировать всех мобов и складывать их в массив для последующего рандомного вызова оттуда:

    Код
    using UnityEngine;
    using System.Collections;
    using System;

    public class MobGenerator : MonoBehaviour {

       private Mob[] _mob;     // creating array of Mob

       // Use this for initialization
       void Start () {
        _mob = new Mob[Enum.GetValues(typeof(MobName)).Length];  // setting length of Mob array

        SetupMobs();                    // populating Mob array
       }
         
              // This function populates Mob array
       private void SetupMobs(){
        for (int cnt = 0; cnt < _mob.Length; cnt++){
         _mob[cnt] = new Mob();
         _mob[cnt].Name = ((MobName)cnt).ToString();
         _mob[cnt].Attack = (int)((MobAttack)cnt);  //?????
         Debug.Log(_mob[cnt].Name + " : " + _mob[cnt].Attack);
        }
       }
    }
       


    Вопрос: как из enum MobAttack подставить интовые значения атаки в _mob[cnt].Attack (строка в генераторе с ?????).
    В настоящий момент код вытягивает только нумерацию, то есть 0,1,2,3,4 и т.д.
    Мне же там нужны зачения.
    Как получить значение конкретной строки перечисления? Или вообще как то по другому это заполнение моба сделать?


    Сообщение отредактировал error111 - Воскресенье, 24 Ноября 2013, 04:28
    LabirintikДата: Воскресенье, 24 Ноября 2013, 06:36 | Сообщение # 4974
    постоянный участник
    Сейчас нет на сайте
    Цитата error111 ()
    интовые

    Цитата error111 ()
    В настоящий момент код вытягивает только нумерацию,

    а разве INTовые это и не нумерация?
    Если не прав, подправьте меня.
    AmmokuДата: Воскресенье, 24 Ноября 2013, 06:37 | Сообщение # 4975
    частый гость
    Сейчас нет на сайте
    *удалено* (не обновил страницу, ответил на отвеченное)
    мне кто-нить помогите плз


    Сообщение отредактировал Ammoku - Воскресенье, 24 Ноября 2013, 06:40
    error111Дата: Воскресенье, 24 Ноября 2013, 06:56 | Сообщение # 4976
    заслуженный участник
    Сейчас нет на сайте
    Цитата Labirintik ()
    а разве INTовые это и не нумерация?


    Не, конечно нумерация это тоже инт.
    Но в enum можно записать перечисление интов. В моем случае это выглядит так:

    Код

    public enum MobAttack : int{  
        Rat = 1,  
        Bat = 1,  
        Slime = 2,  
        Goblin = 3,  
        Hound = 4,  
        Ghoul = 5,  
        Lizardman = 5,  
        Orc = 6,  
        Undead = 7,  
        Deamon = 9,  
    }  


    И мне нужно выдергивать именно значение после =, а не индекс элемента.
    Это однозначно можно как-то сделать, ведь если к примеру в интересующей меня строке написать
    Код
    _mob[cnt].Attack = (int)MobAttack.Bat;  //?????
    ,
    то атаке присвоится значение после =.


    [Shmup/RPG] Fantasy Shmup!
    LabirintikДата: Воскресенье, 24 Ноября 2013, 08:41 | Сообщение # 4977
    постоянный участник
    Сейчас нет на сайте
    Цитата error111 ()
    Но в enum можно записать перечисление интов. В моем случае это выглядит так:

    Enum же вроде бы используют именно только для перечисление, то есть два разных моба не могут иметь одно значение или я не прав?
    error111Дата: Воскресенье, 24 Ноября 2013, 09:56 | Сообщение # 4978
    заслуженный участник
    Сейчас нет на сайте
    Цитата Labirintik ()
    Enum же вроде бы используют именно только для перечисление, то есть два разных моба не могут иметь одно значение или я не прав?


    Ну так у меня и есть перечисление: Rat, Bat, Slime и т.д.
    А числа после = это всего лишь их значения. Почему они не могут быть одинаковыми?


    [Shmup/RPG] Fantasy Shmup!
    LabirintikДата: Воскресенье, 24 Ноября 2013, 10:38 | Сообщение # 4979
    постоянный участник
    Сейчас нет на сайте
    Цитата error111 ()

    А числа после = это всего лишь их значения. Почему они не могут быть одинаковыми?

    числа после = это их Ид.
    Так как если не обозначать их, они будут идти по порядку
    NEBRДата: Воскресенье, 24 Ноября 2013, 14:30 | Сообщение # 4980
    почти ветеран
    Сейчас нет на сайте
    error111, я собрал вашу сценку и вот что понял. Если значения в MobAttack не повторяются, то будет работать следущий скрипт. Ваш фрагмент в SetupMobs() я заккоментировал

    Код

    using UnityEngine;     
         using System.Collections;     
         using System;     

         public class MobGenerator : MonoBehaviour {     

           private Mob[] _mob;     // creating array of Mob     

           // Use this for initialization     
           void Start () {     
            _mob = new Mob[Enum.GetValues(typeof(MobAttack)).Length];  // setting length of Mob array     

            SetupMobs();                    // populating Mob array     
           }     
                 
                  // This function populates Mob array     
           private void SetupMobs(){     
              
          foreach (var value in Enum.GetValues(typeof(MobAttack))) {
                 Debug.Log(((MobAttack) value) + ":" + (int) value );
          }
          /*
            for (int cnt = 0; cnt < _mob.Length; cnt++){     
             _mob[cnt] = new Mob();     
             _mob[cnt].Name = ((MobName)cnt).ToString();     
             _mob[cnt].Attack = (int)((MobAttack)cnt);  //?????     
             Debug.Log(_mob[cnt].Name + " : " + _mob[cnt].Attack);     
            }     
            */
                
           }     
         }


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

    Код

    public enum MobAttack : int{     
           Rat = 10,     
           Bat = 15,     
           Slime = 20,     
           Goblin = 25,     
           Hound = 30,     
           Ghoul = 35,     
           Lizardman = 40,     
           Orc = 45,     
           Undead = 50,     
           Deamon = 55,     
         }


    Сначала я пробовал методом enum getName указывать имя, после него хотел вывести с помощью getValues значение константы, но не получалось использовать все это в одном цикле. Так что если есть необходимость использовать одинаковые значения атаки у нескольких мобов, можно сделать вывод в лог в двух разных функциях. Первая выведет только имена, вторая - только их значения

    инфу брал в основном тут


    King Size #Gamiron12

    Сообщение отредактировал NEBR - Воскресенье, 24 Ноября 2013, 14:32
    Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос-[ответ] по Unity (Задаём свои вопросы)
    Поиск:

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