Суббота, 20 Апреля 2024, 04:57

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 52
  • 1
  • 2
  • 3
  • 51
  • 52
  • »
Форум игроделов » Записи участника » allods [1023]
Результаты поиска
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 части :D

Но если по делу, то я уже начал писать себе свою библиотеку с матрицей. Но я не понял как потом полученные значения выводить в Углы. Поэтому подумал что через Углы Эйлера

Добавлено (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 | Тема: поворот
почти ветеран
Сейчас нет на сайте
получается ерунда
Форум игроделов » Записи участника » allods [1023]
  • Страница 1 из 52
  • 1
  • 2
  • 3
  • 51
  • 52
  • »
Поиск:

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