[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, turBO, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Проблеми з батьками?! (...а в кого їх немає.)
Проблеми з батьками?!
DzirtДата: Суббота, 16.08.2008, 10:42 | Сообщение # 1
форумовец
Группа: Модераторы
Сообщений: 260
Награды: 2
Репутация: 9
Статус: Offline
Так, вернувся до своєї давньої проблеми.... Ще колись коли я писав свій перший арканоїд в 3д, в мене вискочила така проблема,після того як я назначив батьків(Parent) обєктам,почали виникати всякі бачіни,наприклад почали зміщуватись глобальні координати,або ж не відповідати дійсності:
Допустим я наставив координати куба на центр машини,потім звязав куб з машиною(EntityParent cube,car), а потім починалася вистава.
Коли машина рухалась(а куб звичайно рухався з нею),координати куба залишались не змінними! І це доставляло не мало проблем коли мені потрібно було їх взнать(entityX(cube)).
Отака от фігня мужикі.Впевненний що я вже просто перепрацював,а ця проблема це просто нюанс який я десь завтикав.Але з моїм новим проектом,де цілі гори коду,його знайти вкрай важко.


Головне в грі не графіка,а сюжет......хоча без першого його й розуміти не хочеться.)
 
turBOДата: Воскресенье, 17.08.2008, 05:32 | Сообщение # 2
Полковник
Группа: Администраторы
Сообщений: 297
Награды: 5
Репутация: 12
Статус: Offline
Если мне не подводит память координаты ребёнка (child) выстраиваются не относительно глобальных координат, а относительно геометрического центра родителя (parent). Тут выше не прыгнуть - двигая родителя мы не меняем координат чайлда, хотя он и перемещается в пространстве.
Как из этого выходить?
Можно брать entityX(parent) и добавлять entityX(child). И так с каждой пространственной координатой!
Именно так, если только я не переседелночью за компьётером...


If 2+2<>4 Then Restart
 
DzirtДата: Понедельник, 18.08.2008, 09:22 | Сообщение # 3
форумовец
Группа: Модераторы
Сообщений: 260
Награды: 2
Репутация: 9
Статус: Offline
Гггг, бачу всі "реальні" пацани над чимось допізна працюють. smile

Головне в грі не графіка,а сюжет......хоча без першого його й розуміти не хочеться.)

Сообщение отредактировал Dzirt - Понедельник, 18.08.2008, 09:23
 
SpidyДата: Понедельник, 18.08.2008, 09:49 | Сообщение # 4
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Не знаю правильно ли я понял проблему (сколько я не делал парент - никогда не видел проблему в считывании координат объектов как локально так и глобально). Для того, чтобы узнать координату функцией entityX(parent) следует просто указать дополнительный параметр true либо false. Global (не обязательно) = True для глобальных координат, False - для локальных.

ex = EntityX( entity, true )

По умолчанию всегда стоит False т.е. глобально. dry


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
DzirtДата: Вторник, 19.08.2008, 14:37 | Сообщение # 5
форумовец
Группа: Модераторы
Сообщений: 260
Награды: 2
Репутация: 9
Статус: Offline
Spidy, Бачиш в чому суть проблеми.Коли рухається парент його координати змінюються і їх можна визначити Entityx(parent).А координати чайлда не змінюються,при тому,що він рухається з парентом.Тобто якщо куб приєднанний до тачки,і тачка(парент) рухається то координати куба(чайлд) всерівно залишаються x=200,y=10,z=1400(це на приклад).От така штука.

Головне в грі не графіка,а сюжет......хоча без першого його й розуміти не хочеться.)
 
SpidyДата: Вторник, 19.08.2008, 15:50 | Сообщение # 6
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Вот пример кода (написал за минуту). Если вместо строки
Code
RuntimeError EntityX(sh2)+" "+EntityY(sh2)+" "+EntityZ(sh2)

написать
Code
RuntimeError EntityX(sh2,1)+" "+EntityY(sh2,1)+" "+EntityZ(sh2,1)

координаты парента будут глобальными

Code
Graphics3D 800,600,32,2
SetBuffer FrontBuffer()

cam = CreateCamera()
PositionEntity cam,0,90,0

sh = CreateSphere()
sh2 = CreateSphere()
EntityParent sh2,sh
pn = CreatePlane()
EntityColor pn,Rand(1,200),Rand(1,200),Rand(1,200)

While Not KeyHit(1)  
Cls
PositionEntity sh,0,0,200
PositionEntity sh2,0,0,300
ScaleEntity sh,1,1,1
UpdateWorld
RenderWorld
RuntimeError EntityX(sh2,1)+" "+EntityY(sh2,1)+" "+EntityZ(sh2,1)

Flip
Wend

End


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
DzirtДата: Четверг, 28.08.2008, 16:11 | Сообщение # 7
форумовец
Группа: Модераторы
Сообщений: 260
Награды: 2
Репутация: 9
Статус: Offline
Я знайшов вихід підключивши лібу.В любому випадку сянкс.

Головне в грі не графіка,а сюжет......хоча без першого його й розуміти не хочеться.)
 
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Проблеми з батьками?! (...а в кого їх немає.)
  • Страница 1 из 1
  • 1
Поиск: