forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Проблема !? (http://forum.boolean.name/showthread.php?t=15235)

Sfonsper 03.08.2011 19:12

Проблема !?
 
Дело такое, нашел на форуме тему делаем квест на xors3D .
Скачал я этот квест посмотрел что все объекты анимированые и все работает нормально и вот когда я перевел код в обычный для блитза код ( без х ) то началось проблема с анимацией и вылетом при нажатии на ящик " Entity has no animation"
Помогите решить эту проблему.
http://forum.boolean.name/showthread.php?t=12628

Mind 03.08.2011 20:59

Ответ: Проблема !?
 
Ксорс и Блитз не одинаковы!
Кури код, подставляй другие команды пробуй эксперементировать все в твоих руках.

На счет анимации сильно помочь не могу.Возможно проблема в коде(в анимации каких-то опр.сценок... см. оффтоп)

Sfonsper 04.08.2011 03:04

Ответ: Проблема !?
 
Вложений: 1
я все перепробовал ничего не получается , не знаю что еще можно сделать.

Mind 04.08.2011 12:08

Ответ: Проблема !?
 
Всё говоришь... а свой код написать не пробывал. Намного лучше и меньше гемороя.
Я так обычно и делаю.
А вообще я посмотрел код и получается там не может наити анимацию объекта. Такое чувство что она просто не загружена. Но мне кажется проблема в самой загрузке объекта, ибо не может наитись анимация для объекта.. Попробуй сделать свою загрузку уровня наподобе:

Код:

Function RecurseSeek(free)
        For i=0 To xCountChildren(free)-1
                        child=xGetChild(free,i)
                name$=Lower(xEntityName(child))
;Collisons
If Instr(name$,"s2")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Collisions",True,True
xFlip
x#=xEntityX(child)
y#=xEntityY(child)
z#=xEntityZ(child)
xCreateTrimesh(child,0)
xEntityType child,Nwall
xEntityPickMode child,2
EndIf

If Instr(name$,"stup")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Collisions",True,True
xFlip
x#=xEntityX(child)
y#=xEntityY(child)
z#=xEntityZ(child)
xCreateTrimesh(child,0)
xEntityType child,Nwall
EndIf

;Doors
If Instr(name$,"doorl")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Doors",True,True
xFlip
xNameEntity child,"left"
InitDoor(child)
x#=xEntityX(child)
y#=xEntityY(child)
z#=xEntityZ(child)
xCreateHullmeshDoor(child,0)
EndIf

;Player
If Instr(name$,"player")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Player",True,True
xFlip
px#=xEntityX(child)
py#=xEntityY(child)
pz#=xEntityZ(child)
rpy#=xEntityYaw(child)
xHideEntity child
EndIf

If Instr(name$,"doorr")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Doors",True,True
xFlip
xNameEntity child,"right"
InitDoor(child)
x#=xEntityX(child)
y#=xEntityY(child)
z#=xEntityZ(child)
xCreateHullmeshDoor(child,0)
EndIf

;Meshes
If Instr(name$,"bo4ka")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Meshes",True,True
xFlip
InitBo4ka(child)
x#=xEntityX(child)
y#=xEntityY(child)
z#=xEntityZ(child)
rx#=xEntityPitch(child)
ry#=xEntityYaw(child)
rz#=xEntityRoll(child)
xCreateHullmeshB(child,0)
EndIf

If Instr(name$,"lesn")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Meshes",True,True
xFlip

InitLesn(child)
x#=xEntityX(child)
y#=xEntityY(child)
z#=xEntityZ(child)
rx#=xEntityPitch(child)
ry#=xEntityYaw(child)
rz#=xEntityRoll(child)
xEntityType child,Nwall
xCreateHullmeshL(child,0)

EndIf

;Water
If Instr(name$,"water")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Water!!!",True,True
xFlip
Delay 30
xEntityType child,Nwall
xp#=xEntityX(child)
yp#=xEntityY(child)
zp#=xEntityZ(child)
xEntityAlpha child,0.7
xEntityPickMode child,2
xAnimate child,1,0.4
EndIf       

;Sky
If Instr(name$,"sky")
xCls
xFlip
xCls
xColor 200,200,200
xText 640,500,"Sky",True,True
xFlip
xFlipMesh child
EndIf       

Next
End Function

Убери просто лишнее из моей функции и поставь в свой двиг.
ПС недавно понял главную вещь как загружать объекты из мапы и их потом использовать(т.е двигать вращать и пр.):делаешь масив на то кол-во объектов которое будет в сцене(ну там 20 ящиков значит dim obj_yashik(20)...) потом при загрузке предмета назначаешь ему массив:
if instr(name$,"yashik") then
n=n+1
obj_yashik(n)=child ;Смотри что такое чилд в начале моей функции.
endif
И все. У меня все пашет. Удачи в реализации и создании новых проэктов. :ok:

Sfonsper 05.08.2011 01:26

Ответ: Проблема !?
 
спасибо за ответ,но я хочу сказать что у меня есть свой код ,техногия чтения карт похожа ,только более совершеная но только я не использую анимацию,зато все пашет.просто захотелось,чтоб была анимация это сократит мой код во много раз.например действия всех объектов будет производиться одной командой но канечно все через тип.id name

Hurrit 05.08.2011 02:15

Ответ: Проблема !?
 
во-первых, проверь добавил ли ты анимацию объекту, во-вторых, проверь загрузил ли ты её при помощи xLoadAnimMesh(), в-третьих, проверь указал ли ты правильный путь к файлу. И да, у ксорса и блица есть небольшое различие в xFindChild(), у одного счет начинается с 0, у другого с 1, это тоже проверь. Вроде бы всё.

Sfonsper 05.08.2011 13:51

Ответ: Проблема !?
 
все случаи у меня правильно написано и это ничего не дает
ошибка анимации проподает когда я ставлю анимате для всей карты а это никуда негодиться т.к все начинает дейтвовать одновременно, а для опреленного объекта ошибка нет анимации


Часовой пояс GMT +4, время: 08:18.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot