forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

Okay 31.01.2013 18:36

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 251261)
притяжения куда? можно менять направление гравитации http://docs.unity3d.com/Documentatio...s-gravity.html

Блин.. В принципе то! Но не то, что мне нужно. Смотри. есть игрок и объект. Мне нужно, чтобы игрок смог бегать по объекту с любой стороны. Как в Assasin's Creed бегает по стенам

WISHMASTER35 31.01.2013 19:50

Ответ: Вопросы от новичка
 
Okay, не помню чтобы в асасине можно было бегать по стенам. Может просто лазить?
Кстати, на CharacterConroller Physics.gravity не действует. Изменять направление гравитации чарактеру будет очень сложно.

Okay 31.01.2013 19:57

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 251274)
Okay, не помню чтобы в асасине можно было бегать по стенам. Может просто лазить?
Кстати, на CharacterConroller Physics.gravity не действует. Изменять направление гравитации чарактеру будет очень сложно.

нет, нет, нет. В Ассасин можно было на стену забегать. Он по стене раза 3-4 ногами проходил. мне нужен примерно этот тип.

WISHMASTER35 31.01.2013 20:08

Ответ: Вопросы от новичка
 
Okay, помню бегать по стенам была фишка Принца Персии.
Тут тебе надо переделывать CharacterMotor. Черт знает как такое сделать. Наверно на секунду просто отключить или ослабить гравитацию.

mauNgerS 31.01.2013 20:28

Ответ: Вопросы от новичка
 
Ещё вопрос про цели и пули.

Если нельзя быстро перебирать типы объектов, то как сделать самонаводящиеся ракеты например?

Допустим у ракеты есть определённый радиус захвата цели. Когда в этот радиус попадает какой-нибудь противник ракета сама наводится на него.

Выстрелил ракет штук 10 в разные стороны. Каждая ракета по ходу полёта нашла себе цель.

pax 31.01.2013 21:13

Ответ: Вопросы от новичка
 
На ракету можно повесить большой колайдер в режиме триггера и RigidBody в режиме IsKinematic. Ловить ракетой событие http://docs.unity3d.com/Documentatio...ggerEnter.html
Как поймало Box (на нем должен быть колайдер) - можно удалить с себя триггер и лететь в сторону пойманного бокса.

WISHMASTER35 31.01.2013 21:23

Ответ: Вопросы от новичка
 
Я бы в каком-то скрипте GameController хранил список игроков. А пушка в этом списке искала себе подходящую цель.
Впрочем зависит от типа игры и от степени оптимизации.
Не думаю что в шутере типа Crysis хорошо было бы хранить всех врагов огромного уровня в одном списке.
Хотя с другой стороны, если арена с парой игроков, то вряд ли триггер будет тормозить.

WISHMASTER35 31.01.2013 21:57

Ответ: Вопросы от новичка
 
Чем лучше пользоваться для сохранения\загрузки xml?
Попробовал XmlDocumen. Но как только увидел такое
XmlNode childNode = document.CreateElement("BlockSet");
document.AppendChild(childNode);
засомневался стоит ли использовать этот класс. Как-то не хорошо вручную добавлять чальды.

Получаю результат через document.OuterXml, но все элементы в одну строчку.

mepihin 31.01.2013 23:24

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 251291)
Чем лучше пользоваться для сохранения\загрузки xml?
Попробовал XmlDocumen. Но как только увидел такое
XmlNode childNode = document.CreateElement("BlockSet");
document.AppendChild(childNode);
засомневался стоит ли использовать этот класс. Как-то не хорошо вручную добавлять чальды.

Получаю результат через document.OuterXml, но все элементы в одну строчку.

Как насчет PlayerPrefs - реестр

WISHMASTER35 01.02.2013 00:12

Ответ: Вопросы от новичка
 
mepihin, причем тут PlayerPrefs и реестр?
Кстати, сохранить с переносами можно так
Код:

        StringWriter stringWriter = new StringWriter(new StringBuilder());
        XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);
        xmlTextWriter.Formatting = Formatting.Indented;
        document.Save( xmlTextWriter );
        return stringWriter.ToString();

Не пойму какой смысл создавать нод таким образом document.CreateElement("BlockSet")
Если все равно его вручную нужно добавлять в иерархию.
А по другому XmlNode не создашь.

WISHMASTER35 01.02.2013 01:50

Ответ: Вопросы от новичка
 
Пытаюсь сделать универсальный метод для сохранения объекта в XML т.е. что-то типа своей сериализации.
Пишу такое
Код:

        private static XmlNode FieldToXml(FieldInfo field, object obj, XmlDocument document) {
                XmlNode node = document.CreateElement( field.Name );
                FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
                foreach(FieldInfo childField in fields) {
                        XmlNode childNode = FieldToXml(childField, childField.GetValue(obj), document);
                        if(childNode != null) node.AppendChild(childNode);
                }
                return node;
        }

Но этот метод зависает т.к. GetFields все время получает элемент m_value.
Как можно правильно такое сделать? Еще и это "m_" дописывает к именам переменных.

pax 01.02.2013 01:59

Ответ: Вопросы от новичка
 
убери BindingFlags.NonPublic, зачем тебе приватные переменные, которые не надо сериализовать?

WISHMASTER35 01.02.2013 02:05

Ответ: Вопросы от новичка
 
Я обычно переменные делаю приватными и помечаю их атрибутом SerializeField.
Хотя действительно просто приватные не надо сохранять.
Добавил такую проверку
Attribute.IsDefined(field, typeof(SerializeField))
Теперь нормально.

Черт! Нормальный универсальный метод для сохранения всех типов не сделаешь!
Например Rect. x, y, width, height это не поля, а свойства. Если сохранять и свойства, то захватится и всякая фигня вроде center.

is.SarCasm 01.02.2013 21:08

Ответ: Вопросы от новичка
 
Как замедлить одну определенную анимацию в Mecanim?

WISHMASTER35 02.02.2013 00:38

Ответ: Вопросы от новичка
 
pax, не подскажешь еще как достать свойства?
Использую такие флаги BindingFlags.Public|BindingFlags.Instance но как в прошлый раз бесконечная рекурсия.
Там похоже постоянно какой-то System.Single получается.

is.SarCasm, а в Mecanim используется тот же CharacterController? Писали, что там обычный коллайдер и RigidBody.


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

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