![]() |
кубик рубика
Вложений: 1
если у кого-то есть свободное время и нечем заняться, посмотрите что здесь не так, я с этим сижу уже весь день, скоро стану вот таким - :crazy:
когда включите нажмите стрелку вправо; не обращайте внимания на большучесть кода в некоторых местах, это я оптимизирую, мне главное понять почему при повторном нажатии на стрелку вправа происходит.... то что происходит (я пробовал и translate и moveentity все равно двигает в одну и ту же сторону, ну вобщем гляньте кому не лень |
Ответ: кубик рубика
Цитата:
|
Ответ: кубик рубика
чет способ ваще помоему ущербный
мне видится такая схема: вращать отдельные части левой кнопкой мыши, правой кнопкой вращать весь кубик естессно вращать можно по 90 градусов чтобы прокрутить одну грань из 9ти кубиков присваивать им entityparent к пивоту , который находится в центре, а потом отцеплять его . и при этом использовать трехмерный массив для хранения кубиков |
Ответ: кубик рубика
сделал через пивоты, да полегче(намного), просто я планировал двигать каждый кубик, мне казалося так интереснее
осталася одна проблема PHP код:
я же вроде при каждом нажатии сохраняю текущий угол поворота:dontknow: |
Ответ: кубик рубика
Открой дебаггер и посмотри какие значения принимают переменные. Это поможет тебе понять, в чём дело.
|
Ответ: кубик рубика
Цитата:
(проблему с бесконечными поворотами я решил, но появились новые поэтому он бы мне помог) |
Ответ: кубик рубика
Не этот дебаггер. Поставь галочку у Program->Debug Enabled
|
Ответ: кубик рубика
Цитата:
при повороте некоторые кубики имеют координаты по оси Х что то вроде 2,00445е-6.00 откуда это может браться? |
Ответ: кубик рубика
Вот это и надо смотреть дебаггером! Ставь брекпойнты и смотри значения переменных, таким образом ища логическую ошибку.
|
Ответ: кубик рубика
Вложений: 1
вот что у меня получилось(во вложении)
так как код получился довольно большым, я не прошу вникать в код мне бы только узнать ваши предположения на счет появления координат у верхних кубиков управление: PHP код:
(может это связано с припэрентиванием и отпэрениванием к пивотам??:dontknow: ) |
Ответ: кубик рубика
WhiteBlack, ты делал то, что описано в посте №9 ?
|
Ответ: кубик рубика
Цитата:
|
Ответ: кубик рубика
полазил с дебаггером, нашел такую ерунду: после поворота ЗНАЧЕНИЕ координаты Y увеличивается на 10, при этом реальные координаты остаются прежними, то есть он никуда не сдвигается
при этом вспомнил, что у меня ест вот такая строчка PHP код:
такое ощущение, что вот эта десятка прибавляется, но если ее не прибавлять, тогда пивот получается не по центру и кубики вращаются не точно что то я не понал, если что то припэрентить, а потом отпэрентить, координаты вроде должны быть те же? или нет? |
Ответ: кубик рубика
Цитата:
Цитата из фака блитза: Код:
EntityX# ( entity[,global] ) |
Ответ: кубик рубика
Запустил программу. После нескольких вращений кубик развалился.
Код слишком запутан. Попробуй вращать стороны с помощью отдельных функций. |
Ответ: кубик рубика
Цитата:
|
Ответ: кубик рубика
Вероятно проблема с файлом rubik.3DS
Если убрать 26 кубиков, то видно что на нижней плоскости в середине один лишний кубик. Но главное центр кубика расположен на его нижней гране, поэтому даже в одном и том-же месте у кубика могут быть разные координаты, в зависимости от поворота |
Ответ: кубик рубика
Цитата:
спасибо, если честно я не понимаю откуда он взялся Цитата:
сейчас попробую исправить |
Ответ: кубик рубика
Вложений: 1
Поставил координаты от центра, удалил лишний кубик, но ничего не изменилось:dontknow:
|
Ответ: кубик рубика
Изменились только координаты всей группы кубиков. При загрузке ты отделяешь кубик от всей группы. Но центр каждого маленького кубика все равно в середине нижней грани после отсоединения. Поэтому ничего не изменилось.
|
Ответ: кубик рубика
Цитата:
ну хорошо пробую еще раз |
Ответ: кубик рубика
RBK, скажи пожалуйста, как ты определяешь, где находится центр у фигуры в Блитце, просто каждый раз выкладывать архив для проверки, я думаю это вам неприкольно.
|
Ответ: кубик рубика
Я из кусков твоей программы сделал тестовую программу в которой поочередно вращаются маленькие кубики.
Вот это исправление загрузит кубики правильно: Код:
Function FindAllKubes(mesh) |
Ответ: кубик рубика
Цитата:
|
Ответ: кубик рубика
Чтобы вращать весь куб или его часть нужен всего один пивот.
Код:
piv=CreatePivot();Создаем пивот для вращения |
Ответ: кубик рубика
Цитата:
просто я попробовал к piv присоединял пивоты центральные и все равно разваливается :4to: может все таки ошибка где-то в логике? или ты говорил, что использовал где то мой код, там работало, да?:crazy: |
Ответ: кубик рубика
Я только сейчас заметил что ты переписал функции во втором варианте.
Зачем все так усложнять? Значение MaxY, MaxX и другие нужно определить только раз, в самом начале, а потом использовать. Да присоединяй к piv центральные пивоты |
Ответ: кубик рубика
Цитата:
вся проблема в координатах: у кубиков (теперь уже у пивотов) после поворота больше чем на 270 градусов (во время четвертого поворота) появляются непонятные координаты, это глюк Блица?! (я решил проверить, взял просто кубик присоединил его к пивоту и повернул пивоту на 90 градусов, координаты кубика были (-5; 0; 5),а стали равны (5,96046е-007; 0; -4,76837Е-007) - ЧТО ЭТО?????? как с этим справиться? |
Ответ: кубик рубика
координаты глобальные берёшь?
|
Ответ: кубик рубика
Цитата:
Равенство двух чисел типа Float проверяют так: if Abs(A#-B#) < (величина возможного разброса) если условие выполняется числа A# и B# равны. |
Ответ: кубик рубика
все просто суперррр, Спасибо RBK
ты даже не представляешь как я тебе благодарен!!!!! теперь все работает:) |
Ответ: кубик рубика
Народ, не забываем, что координаты чаилдов, остаются как в редакторе, и направление такое-же.В максе вместо X-Z и т.д
|
Часовой пояс GMT +4, время: 14:49. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot