Результаты поиска
| |
allods | Дата: Пятница, 15 Февраля 2019, 01:57 | Сообщение # 1 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| Цитата drcrack ( ) у тебя что по математике было в школе?)) каким образом умножение на 1 может убрать минус?) Или или я написал. Вдруг это не умножение а еще какая фишка
|
|
| |
allods | Дата: Среда, 13 Февраля 2019, 23:43 | Сообщение # 2 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| Спасибо я понял что и как. Добавлено (14 Февраля 2019, 17:46) ---------------------------------------------
Код int placeholdersQty = reader.readUInt32();
reader.skip(placeholdersQty * 1);
зачем нужно умножение placeholdersQty *1 ? либо это не умножение а на случай если -placeholdersQty то убираем минус либо я хз
|
|
| |
allods | Дата: Среда, 13 Февраля 2019, 23:11 | Сообщение # 3 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| Цитата drcrack ( ) это список инициализации, т.е. фактически методы которые будут вызваны при вызове этого конструктора можешь их рассматривать как будто это присваивание полей внутри { }
А как такое назвать что бы почитать на эту тему.
|
|
| |
allods | Дата: Среда, 13 Февраля 2019, 22:57 | Сообщение # 4 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| не понятно как это работает. В смысле из того что я нашарил тут можно получить Линк к переменной ? Так ли это ? Просто тут переменный через запятые как в enum
|
|
| |
allods | Дата: Среда, 13 Февраля 2019, 22:26 | Сообщение # 5 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| кто может объяснить как работает вот это. И в чем преимущество
Код EventCondition::EventCondition(EWinLoseType condition, si32 value, si32 objectType, int3 position): object(nullptr), metaType(EMetaclass::INVALID), value(value), objectType(objectType), objectSubtype(-1), position(position), condition(condition) {}
И главное как это называется
Сообщение отредактировал allods - Среда, 13 Февраля 2019, 22:27 |
|
| |
allods | Дата: Среда, 13 Февраля 2019, 00:27 | Сообщение # 6 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| Цитата DivES ( ) В двоичной системе исчисления самый старший разряд - крайний левый (то есть в 0111 1111 самым старшим является 0, самым младшим - крайняя справа единица). Так что отсутствие замка под номером один (обозначаемого 1 битом) будет выглядеть как 111111110. Так же как и отсутствие десятого замка (256 бит) будет выглядеть как 011111111.
Да я это учел и просто инвертирую ну или читаю в другую сторону. Хотя я еще не написал код а в процессе. И если мне у меня получится правильно считать данные то вопросов не останется точно =) хотя возможно в дальнейшем будут еще в таком духе =).
Добавлено (13 Февраля 2019, 01:39) --------------------------------------------- В итоге вот мой аналог
Код for (int fact = 0; fact < totalFactions; fact++) { if ((allowedFactions % 2) != 0) this.allowedFactions.Add((Faction)fact); allowedFactions = allowedFactions / 2; }
Спасибо за разъяснения DivES и drcrack
Все работает
Сообщение отредактировал allods - Среда, 13 Февраля 2019, 01:50 |
|
| |
allods | Дата: Среда, 13 Февраля 2019, 00:03 | Сообщение # 7 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| Цитата DivES ( ) allods, а как ты преобразовываешь тот код, что уже показывал? Я вот лично пока что не вижу реализации твоей идеи через тот код :(
собственно вот тот код под вопросом
Код for(int fact = 0; fact < totalFactions; ++fact) { if(!(allowedFactions & (1 << fact))) { mapHeader->players[i].allowedFactions.erase(fact); } totalFactions = количество всех замков allowedFactions = биты замков которые я считываю из файла. Всего есть 511 байтов = 111111111. К примеру 510 ровняется замки от 2-9 так как 511-510 = 1. А 1 байт это замок номер 1. то есть 011111111 я знаю что этого замка в списке уже нет. Если 255 то значит 511-255 = 256 а это последний замок. то значит 111111110. значит нет 9го замка.
То есть считав сколько байтов я уже благодаря преобразованию в двоичную систему знаю какие замки доступны.
Что касается той функици Мы смотрим все 1и0 в allowedFactions и если 0 то убираем замок под индексом fact из списка замков оставляя в списке только доступные. то есть в итоге если 110111101 то мы уберем замки под индексом 8 и 3 Благодаря вашим ответам я пришел к этому выводу. Это логично все сходится. Завтра закину вам еще + так как без вас я бы еще сидел щеки надувал
Сообщение отредактировал allods - Среда, 13 Февраля 2019, 00:08 |
|
| |
allods | Дата: Вторник, 12 Февраля 2019, 23:27 | Сообщение # 8 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| Цитата DivES ( ) Разобрать конечно можно и проверить тоже, если это требуется. Но по идее, двоичный 0 он и в Африке - ноль (в десятичной системе, имеется в виду). То есть, 0 (в десятичной) = 0 (тут и далее - в двоичной) = 00 = 000 = 0000 =... То есть, проверка if (двоичное число) будет срабатывать только в том случае, когда в этом двоичном числе есть хотя бы одна единичка :)
Хорошо тогда я объясню задачу потому что я что то не уловил.
У меня есть список Замков их 9 в виде bool (либо есть на выбор либо нет) то есть у 1 игрока может быть 1,2,5,7 замок на выбор у другого 1,5,6,8,9 у третьего все 1,2,3,4,5,6,7,8,9 то есть все. они хранятся в таком виде 1 ,2,4,8,16,32,64,128,256 в битах в итоге у первого игрока 1+2+16+64 у второго 1+16+128+256 у третьего в итоге 511 то есть 111111111 то есть все замки true то есть если переделать тот код то можно не убирать 0 и в итоге проверять наличие замка на выбор чере 1 либо 0 не парясь с маской.
Тот код не мой и да он работает это точно . Мне нужно его понять и написать уже свое. Поэтому я и рассказываю тот как я понял и то как я бы сделал. Просто хочу понять правильно в итоге я понял тот код или нет. Конечно благодаря тому что вы мне рассказали про двоичный код и то как работает тот код я смог написать свой. И кстате в итоге то что я теперь уже написал сам работает. Просто немного по другому но в целом получается получить данные и правильно их растолковать!
------------- Точнее код не проверял но судя по двоичному allowedFactions если не стирать нули то все сходится.
Сообщение отредактировал allods - Вторник, 12 Февраля 2019, 23:39 |
|
| |
allods | Дата: Вторник, 12 Февраля 2019, 23:03 | Сообщение # 9 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| в моем случае получается UInt16 allowedFactions = r.ReadByte(); allowedFactions += (UInt16)(r.ReadByte() * 256); и получаю 511 посмотрел это в двоичной системе 111111111 это точно то что мне надо.
собственно для проверки я могу просто разобрать 111111111 в Лист и через цикл проверить 0 или 1 ? я правильно понял ? просто я не знаю как мне переписать
Код if(!(allowedFactions & (1 << fact))) { mapHeader->players[i].allowedFactions.erase(fact); }
players[i].allowedFactions.erase(fact); и еще что такое erase я посмотрел и насколько я понял оно убирает значение == fact ?
вообщем странно немного. С этим кодом что я написал в самом начале. Я получаю не в двоичной системе не 111111111 а 511 в итоге все остальне не работает. Так как я не вижу преобразования 511 в 111111111 В итоге если преобразовать в двоичую систему все сходится. Или я что то не понял
Сообщение отредактировал allods - Вторник, 12 Февраля 2019, 23:14 |
|
| |
allods | Дата: Вторник, 12 Февраля 2019, 22:27 | Сообщение # 10 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| спасибо за ответы , просто я только "скриптю" и там по другому многое пишется. mapHeader->players[i].allowedFactions.erase(fact); здесь как бы стираем часть значения из players[i].allowedFactions ? если fact = 5 то если players[i].allowedFactions == 123456789 то получим 12346789 ?
Код ui16 allowedFactions = reader.readUInt8(); // How many factions will be read from map ui16 totalFactions = GameConstants::F_NUMBER; а здесь почему ui16 ? в чем его фишка
Сообщение отредактировал allods - Вторник, 12 Февраля 2019, 22:29 |
|
| |
allods | Дата: Вторник, 12 Февраля 2019, 21:27 | Сообщение # 11 | Тема: Вопрос-Ответ (C++) |
почти ветеран
Сейчас нет на сайте
| Ребят помогите Помогите понять этот кусок когда
Код ui16 allowedFactions = reader.readUInt8(); // How many factions will be read from map ui16 totalFactions = GameConstants::F_NUMBER;
if(mapHeader->version != EMapFormat::ROE) allowedFactions += reader.readUInt8() * 256; else totalFactions--; //exclude conflux for ROE
for(int fact = 0; fact < totalFactions; ++fact) { if(!(allowedFactions & (1 << fact))) { mapHeader->players[i].allowedFactions.erase(fact); } }
а именно if(!(allowedFactions & (1 << fact)))
Сообщение отредактировал allods - Вторник, 12 Февраля 2019, 21:29 |
|
| |
allods | Дата: Понедельник, 10 Сентября 2018, 16:13 | Сообщение # 12 | Тема: Вопрос-[ответ] по Unity |
почти ветеран
Сейчас нет на сайте
| Ребят нужен ответ типо как бы сделали вы. Я немного озадачен и не думаю что делаю правильно хотя не уверен и в обратном.
Я использую в своем проекте наследие классов. Это сильно помогает. к примеру есть класс ХП, его наследуют классы Move и Static. В свою очередь Units наследуют Move а Buildings наследует Static . В итоге для того что бы обратиться к Зданию или к Юниту мне достаточно получить ХП для нанесения урона или получить другую базовую инфу. Также использую Полиморфизм . В итоге могу вызвать любую функцию любого другого класса которая есть в ветке классов после ХП. Во всем этом есть куча плюсов.
Так же я думал использовать Интерфейсы, либо вовсе заменить Наследие.
А что бы вы использовали Наследие или Интерфейсы в пректе типа RTS с постройкой зданий и юнитов ?
Само собой вопрос для тех кто понял о чем идет речь. -------------------- Кто знает можно ли через скрипт Батчить свет в юнити, кончено в Editor mode. Создаю свой тирейн, при каждом изменении автоматом начинается батчинг света. Я бы хотел поставить батчинг на не Auto generate для того чтобы батчить раз, через скрипт, после создания тирейна
Вот Lightmapping.BakeAsync();
Сообщение отредактировал allods - Понедельник, 10 Сентября 2018, 18:53 |
|
| |
allods | Дата: Воскресенье, 04 Марта 2018, 21:20 | Сообщение # 13 | Тема: Оптимизация |
почти ветеран
Сейчас нет на сайте
| Цитата defGMDefeloper ( ) Вот код,к примеру.Нужно ли создавать предварительно ссылку перед всеми этими обращениями,или это никак не влияет на производительность? обращение на прямую к компоненту всегда быстрее. Занесите Transform в переменную
|
|
| |
allods | Дата: Воскресенье, 04 Марта 2018, 21:02 | Сообщение # 14 | Тема: Вопрос-[ответ] по Unity |
почти ветеран
Сейчас нет на сайте
| Цитата WST ( ) Как правильно занести объект в лист через коллизию и удалить его со сцены но не из листа? У меня объект заносится в лист и уничтожается, а в инспекторе отображается как missing Просто отключать его gameObject.SetActive(false); Удаление это полное удаление из памяти, этого объекта больше не существует поэтому missingДобавлено (04 Марта 2018, 21:02) ---------------------------------------------
Цитата Oleshka_51 ( ) ебят, помогите. Как привязать анимацию к скрипту? Создал анимацию выстрела оружия, есть скрипт: Через аниматор нужно создать AnimController там все это делать, создать в нем переменную bool для проигрывания или trigger и через скрипт anim < ваш Animator
anim.SetTrigger("имя вашей переменной")
в контроллере вы вызовите Триггер и анимация проиграется, важно поставить анимацию не на Loop в параметрах модели.
Я вам рекомендую посмотреть туториалы на эту тему
Сообщение отредактировал allods - Воскресенье, 04 Марта 2018, 20:55 |
|
| |
allods | Дата: Воскресенье, 04 Марта 2018, 20:49 | Сообщение # 15 | Тема: 2 камеры |
почти ветеран
Сейчас нет на сайте
| В самом канвасе выберете камеру
|
|
| |
allods | Дата: Понедельник, 19 Февраля 2018, 15:22 | Сообщение # 16 | Тема: поворот |
почти ветеран
Сейчас нет на сайте
| ну так я смотрел эти ваши матрицы.... все 3 части
Но если по делу, то я уже начал писать себе свою библиотеку с матрицей. Но я не понял как потом полученные значения выводить в Углы. Поэтому подумал что через Углы ЭйлераДобавлено (19 Февраля 2018, 15:21) ---------------------------------------------
Код function matrix4x4:SetRotation(flAngle,v) -- Normalize beforehand v = v:normalize()
-- c = math.cos(angle), s = math.sin(angle), t = (1-c) -- [ xxt+c xyt-zs xzt+ys ] -- [ yxt+zs yyt+c yzt-xs ] -- [ zxt-ys zyt+xs zzt+c ]
local x = v.x local y = v.y local z = v.z local rot = math.rad(flAngle) local c = math.cos(rot) local s = math.sin(rot) local t = 1-c
m[1].x = x*x*t + c m[2].x = x*y*t - z*s m[3].x = x*z*t + y*s
m[1].y = y*x*t + z*s m[2].y = y*y*t + c m[3].y = y*z*t - x*s
m[1].z = z*x*t - y*s m[2].z = z*y*t + x*s m[3].z = z*z*t + c end Добавлено (19 Февраля 2018, 15:22) --------------------------------------------- как видно я получаю всего по 3. Какие X Y Z из 3 мне нужно возвращать для поворота
|
|
| |
allods | Дата: Понедельник, 19 Февраля 2018, 00:25 | Сообщение # 17 | Тема: поворот |
почти ветеран
Сейчас нет на сайте
| короче это не движок, просто lua . Все это для PS VITA
http://rinnegatamante.github.io/lpp-vita/ это документация в Render там есть Render.drawModel(mdl, 1.0, 1.0, -5.0, 1.0, 1.0, 0.0) angleX - X rotation value of the model. angleY - Y rotation value of the model. angleZ - Z rotation value of the model.
это все в углах не в радианах. То есть тот код это поворот вокруг точки, то есть сдвиг, меняет координату объекта?
А как тогда сделать именно вращение по своим осям а не мировым.Добавлено (19 Февраля 2018, 00:15) --------------------------------------------- то есть x y z это не угол а позиция ? Добавлено (19 Февраля 2018, 00:25) --------------------------------------------- Вот пример вращения http://grafika.me/node/82 делал по нему что не так
Сообщение отредактировал allods - Понедельник, 19 Февраля 2018, 00:03 |
|
| |
allods | Дата: Воскресенье, 18 Февраля 2018, 22:09 | Сообщение # 18 | Тема: поворот |
почти ветеран
Сейчас нет на сайте
| Код function Xrot(angle) local cos = math.cos(angle) local sin = math.sin(angle) local yy=y*cos - z*sin local zz=z*cos + y*sin y=yy z=zz end
сделал такую функцию
вызываю так Xrot(0.05)
ничего не происходт
PS Я бы на твоем месте не изобретал с нуля линейную алгебру, а взял бы готовые библиотеки.
я просто хочу понять как
|
|
| |
allods | Дата: Воскресенье, 18 Февраля 2018, 21:30 | Сообщение # 19 | Тема: поворот |
почти ветеран
Сейчас нет на сайте
| но как ? если мне надо повернуть сначала по Х а потом по Y как это сделать ? Какой из углов мне туда засунуть
допустим повернуть по Х на 15 градусов
x'=x y'=y*math.cos(math.rad(15))+ z*math.sin(math.rad(15)) z'=-y*math.sin(math.rad(15))+ z*math.cos(math.rad(15))
а Х получается останется без изменения ? Чушь какая то
Сообщение отредактировал allods - Воскресенье, 18 Февраля 2018, 21:42 |
|
| |
allods | Дата: Суббота, 17 Февраля 2018, 23:39 | Сообщение # 20 | Тема: поворот |
почти ветеран
Сейчас нет на сайте
| получается ерунда
|
|
| |
|