|
27.11.2010, 23:29
|
#1
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
кубик рубика
если у кого-то есть свободное время и нечем заняться, посмотрите что здесь не так, я с этим сижу уже весь день, скоро стану вот таким -
когда включите нажмите стрелку вправо; не обращайте внимания на большучесть кода в некоторых местах, это я оптимизирую, мне главное понять почему при повторном нажатии на стрелку вправа происходит.... то что происходит (я пробовал и translate и moveentity все равно двигает в одну и ту же сторону, ну вобщем гляньте кому не лень
|
(Offline)
|
|
27.11.2010, 23:48
|
#2
|
Разработчик
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений (для 329 пользователей)
|
Ответ: кубик рубика
Давненько не видел такой быдлокод...
посмотрите что здесь не так
|
Вот что: для поворота кубов юзай пивоты и парентинг(читай про это в хелпе)
__________________
299 792 458
|
(Offline)
|
|
27.11.2010, 23:50
|
#3
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: кубик рубика
чет способ ваще помоему ущербный
мне видится такая схема: вращать отдельные части левой кнопкой мыши, правой кнопкой вращать весь кубик
естессно вращать можно по 90 градусов
чтобы прокрутить одну грань из 9ти кубиков присваивать им entityparent к пивоту , который находится в центре, а потом отцеплять его .
и при этом использовать трехмерный массив для хранения кубиков
|
(Offline)
|
|
30.11.2010, 13:55
|
#4
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
сделал через пивоты, да полегче(намного), просто я планировал двигать каждый кубик, мне казалося так интереснее
осталася одна проблема
...... Global pivtop=CreatePivot() ..... repeat ..... If KeyHit(205) Then oldyaw(1)=EntityYaw(pivtop) flag=1 For i=1 To 9 EntityParent(cubes(i), pivtop) Next End If TurnPiv() ..... until keyhit(1) Function TurnPiv() If flag=1 Then If EntityYaw(pivright)<oldyaw(1)+90 Then TurnEntity pivright, 0, 0.5, 0 Else flag=0 End If End If End Function
при первом повороте все хорошо, верхняя сторона останавливается, но при втором нажатии она начинает вращаться бесконечно. Почему так?
я же вроде при каждом нажатии сохраняю текущий угол поворота
|
(Offline)
|
|
03.12.2010, 23:10
|
#5
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: кубик рубика
Открой дебаггер и посмотри какие значения принимают переменные. Это поможет тебе понять, в чём дело.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
04.12.2010, 11:23
|
#6
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от ABTOMAT
Открой дебаггер и посмотри какие значения принимают переменные. Это поможет тебе понять, в чём дело.
|
а где взять дебаггер? у меня был старый из твоих уроков по физиксу, но у меня стоит Windows 7 и он почему то не запускается, даже от администратора
(проблему с бесконечными поворотами я решил, но появились новые поэтому он бы мне помог)
|
(Offline)
|
|
04.12.2010, 16:28
|
#7
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: кубик рубика
Не этот дебаггер. Поставь галочку у Program->Debug Enabled
|
(Offline)
|
|
04.12.2010, 16:52
|
#8
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от baton4ik
Не этот дебаггер. Поставь галочку у Program->Debug Enabled
|
а как это мне поможет, у меня же нет ошибки в синтаксе кода, она где то в логике
при повороте некоторые кубики имеют координаты по оси Х что то вроде 2,00445е-6.00
откуда это может браться?
|
(Offline)
|
|
04.12.2010, 16:55
|
#9
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: кубик рубика
Вот это и надо смотреть дебаггером! Ставь брекпойнты и смотри значения переменных, таким образом ища логическую ошибку.
|
(Offline)
|
|
04.12.2010, 20:27
|
#10
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
вот что у меня получилось(во вложении)
так как код получился довольно большым, я не прошу вникать в код мне бы только узнать ваши предположения на счет появления координат у верхних кубиков
управление:
повороты по горизонтали: P(англ)-влево Х(русское)-вправо Ж Э Ю , по вертикали U и J I и K O и L
попробуйте нажать "Х" несколько раз и посморите на координаты верхних кубиков там появляются странные координаты
(может это связано с припэрентиванием и отпэрениванием к пивотам?? )
|
(Offline)
|
|
04.12.2010, 20:29
|
#11
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: кубик рубика
WhiteBlack, ты делал то, что описано в посте №9 ?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
04.12.2010, 20:34
|
#12
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от ABTOMAT
|
да, там какая то фигня извинюясь за выражение, дебаггер после нескольких поворотов говорит, что максимальное значение у из всех кубиков равно 520(хотя там же стоят кубики с Х=540), а "Y" становится 560 хотя должно быть 540
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.12.2010, 21:16
|
#13
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
полазил с дебаггером, нашел такую ерунду: после поворота ЗНАЧЕНИЕ координаты Y увеличивается на 10, при этом реальные координаты остаются прежними, то есть он никуда не сдвигается
при этом вспомнил, что у меня ест вот такая строчка
PositionEntity pivvert, EntityX(cubes(5)), EntityY(cubes(5))+10, EntityZ(cubes(5))
pivvert - это пивот, к которому припэрентиваются кубики
такое ощущение, что вот эта десятка прибавляется, но если ее не прибавлять, тогда пивот получается не по центру и кубики вращаются не точно
что то я не понал, если что то припэрентить, а потом отпэрентить, координаты вроде должны быть те же? или нет?
Последний раз редактировалось WhiteBlack, 05.12.2010 в 12:50.
|
(Offline)
|
|
05.12.2010, 22:39
|
#14
|
ПроЭктировщик
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений (для 25 пользователей)
|
Ответ: кубик рубика
Сообщение от WhiteBlack
что то я не понал, если что то припэрентить, а потом отпэрентить, координаты вроде должны быть те же? или нет?
|
Помойму блитз чуть неадэкватен в этом вопросе, юзай так - если хош глобальную координату то EntityX#(cubes(5),True), есди локальную то EntityX#(cubes(5),False).
Цитата из фака блитза:
EntityX# ( entity[,global] )
Параметры
entity = указатель объекта
global (не обязательно)= True для глобальных координат, False - для локальных. По умолчанию False.
|
(Offline)
|
|
06.12.2010, 02:16
|
#15
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: кубик рубика
Запустил программу. После нескольких вращений кубик развалился.
Код слишком запутан. Попробуй вращать стороны с помощью отдельных
функций.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:16.
|