forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Разрабам (http://forum.boolean.name/showthread.php?t=13486)

Colossus 12.10.2010 21:00

Разрабам
 
Здравствуйте, уважаемые товарищи разработчики Xors3d!

у меня небольшая непонятка - к примеру:

написал такой код - пикаем кубик и на месте пика создается декаль(дырка от пули)(AlignToVectot и все такое)

переписал ето дело на }{ers3D и все работает косячно - декаль не алигнится по вектору, она создается в месте пика но не припарентивается к объекту пика... ет же полный пэ...

что же это? мои кривые руки или недоделка Xors3d?:4to:

Вот собственно все ето:

Код Блица

Код:

Graphics3D 1024,768,32,2
SetBuffer BackBuffer()

Camera = CreateCamera()
PositionEntity Camera,5,2,-10
Hole1=LoadSprite("Media\Gfx\Decal\Metall\Hole1.png",2)
HideEntity Hole1

pivot = CreatePivot()

CreateLight%()

Cube = CreateCube()
EntityPickMode Cube,2

While Not KeyHit(1)

If MouseHit(1) Then
    CameraPick(Camera,MouseX(),MouseY())
    If PickedEntity() <> 0 Then
        MakeHole(Hole1,pivot,5)
    End If
End If

RenderWorld
    Text 5,5,"PickedNX : "+PickedNX()
    Text 5,25,"PickedNY : "+PickedNY()
    Text 5,45,"PickedNZ : "+PickedNZ()
Flip
Wend
End

Function MakeHole(hole%,lvlpivot%,maxdecals%)
    hole=CopyEntity(hole,lvlpivot)
    SpriteViewMode hole,2
    ScaleSprite hole,0.1,0.1
   
    PositionEntity hole,PickedX(),PickedY(),PickedZ(),True
    RotateSprite hole,Rnd(0,360)
    AlignToVector(hole,-PickedNX(),-PickedNY(),-PickedNZ(),3)
    MoveEntity hole,0,0,-0.05
    If CountChildren(lvlpivot)>maxdecals Then FreeEntity GetChild(lvlpivot,1)
End Function

и код Xors3D

Код:

Include "xors3d.bb"
xGraphics3D 1024,768,32,False,True
xSetBuffer xBackBuffer()

Camera = xCreateCamera()
xPositionEntity Camera,5,2,-10
Hole1=xLoadSprite("Media\Gfx\Decal\Metall\Hole1.png",2)
xHideEntity Hole1

pivot = xCreatePivot()

xCreateLight%()

Cube = xCreateCube()
xEntityPickMode Cube,2

While Not xKeyHit(1)

If xMouseHit(1) Then
    xCameraPick(Camera,xMouseX(),xMouseY())
    If xPickedEntity() <> 0 Then
        MakeHole(Hole1,pivot,5)
    End If
End If

xRenderWorld
    xText 5,5,"xPickedNX : "+xPickedNX()
    xText 5,25,"xPickedNY : "+xPickedNY()
    xText 5,45,"xPickedNZ : "+xPickedNZ()
xFlip
Wend
End

Function MakeHole(hole%,lvlpivot%,maxdecals%)
    hole=xCopyEntity(hole,lvlpivot)
    xSpriteViewMode hole,4
    xScaleSprite hole,0.1,0.1
   
    xPositionEntity hole,xPickedX(),xPickedY(),xPickedZ(),True
    xRotateSprite hole,Rnd(0,360)
    xAlignToVector(hole,-xPickedNX(),-xPickedNY(),-xPickedNZ(),3)
    xMoveEntity hole,0,0,-0.05
    If xCountChildren(lvlpivot)>maxdecals Then xFreeEntity xGetChild(lvlpivot,0)
End Function

помоему все одинаково но на Xors3d не работает...

Knightmare 12.10.2010 21:22

Ответ: Разрабам
 
Вложений: 1
Твои кривые руки, я сделал это за 3 минуты и все работает. ВНЕЗАПНО.

maxturbo 12.10.2010 21:34

Ответ: Разрабам
 
Цитата:

Сообщение от Knightmare (Сообщение 164453)
Твои кривые руки, я сделал это за 3 минуты и все работает. ВНЕЗАПНО.

Это ты че типа показал что ты все можешь а кто то нет? Так ты объясни человеку в чем его ошибка и почему у него не работает, а не показывай что ты что то умеешь за 3 минуты!!! :)

ABTOMAT 12.10.2010 21:39

Ответ: Разрабам
 
А чего бы человек сам не подебажил? Не нашёл, на каком именно моменте происходит несоответствие ожидаемому значению? Какая функция выдаёт неверные значения? (или просто работает по-другому, всё-таки ксорс != блиц)
Чтобы как-то облегчить поиск ошибки в движке (если она есть). Выложить километровый код и сказать "не работает, разберитесь!" проще всего (и безрезультатно, конечно же)

Knightmare 12.10.2010 21:51

Ответ: Разрабам
 
Мда. Код-то даже рабочий, если не считать что кривой флаг выравнивания спрайта стоит. Совсем уже охренели, блин.

Colossus 12.10.2010 22:12

Ответ: Разрабам
 
Кошмар,а че код код типа западло написать? хотябы строчку где у меня ошибка... или там все покрыто мраком?

SBJoker 12.10.2010 22:33

Ответ: Разрабам
 
Цитата:

Сообщение от Knightmare (Сообщение 164457)
кривой флаг выравнивания спрайта стоит.

По-моему понятнее некуда.

Colossus 12.10.2010 22:40

Ответ: Разрабам
 
Код:

xAlignToVector(hole,-xPickedNX(),-xPickedNY(),-xPickedNZ(),3)
я так понимаю... ну тоесть вместо тройки надо чет подставить?

Knightmare 12.10.2010 22:43

Ответ: Разрабам
 
Код:

xSpriteViewMode hole,4 ; ZOMG! WTF?!

SBJoker 12.10.2010 22:43

Ответ: Разрабам
 
Чтобы таких вопросов не было есть справка где все флаги расписаны. И вообще чего не пользуешся именованными константами?

Colossus 12.10.2010 23:14

Ответ: Разрабам
 
какими еще нахрен константами??

ну и че, попробовал разные флаги ставить - и не удивился - ВСЕ ОТДНО И ТОЖЕ НИХЕРА НЕ РАБОТАЕТ!!!

Knightmare 12.10.2010 23:15

Ответ: Разрабам
 
SPRITE_FIXED, SPRITE_FREE, SPRITE_FREEROLL, SPRITE_FIXEDYAW. Очевидно же.

Colossus 12.10.2010 23:18

Ответ: Разрабам
 
и со всеми этими х*ями-пирогами тоже не работает (я про именовыные константы)...

Knightmare 12.10.2010 23:19

Ответ: Разрабам
 
Выдерни шнур, выдави стекло. У меня работает твой код с исправленным флагом.

Colossus 12.10.2010 23:21

Ответ: Разрабам
 
и каков же флаг? у меня почему то спрайты ставятся в пикнутые координаты но выравниваются тока по одному вектору...

и + еще декали остаются на тех местах где были созданы... не зависимо от движений тела которое пикнули


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

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