forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Проблема: PhysX и капсула для ГлавГероя. (http://forum.boolean.name/showthread.php?t=8286)

ABTOMAT 23.05.2009 02:08

Ответ: Проблема: PhysX и капсула для ГлавГероя.
 
Да вижу)) Но у себя менять не буду)

MaxEDn2 24.08.2009 15:59

Ответ: Проблема: PhysX и капсула для ГлавГероя.
 
Цитата:

Сообщение от H@NON (Сообщение 105072)
Вот глянь исходник, не совсем удачно получилось, но если разобраться то можно исправить :)
http://rghost.ru/244389

Упс, я децл опоздал, уже удалили. Где его можно взять?

Gector 19.12.2009 17:30

Ответ: Проблема: PhysX и капсула для ГлавГероя.
 
2 cahekp: А ни у кого нет сэмпла передвижения с возможностью прыжка в физ уровне?:rolleyes:Типа как в ХЛ2.
Ну)... ни для кого не секрет, что велосипед изобретать уже не выгодно)))...

St.AnGer 19.12.2009 22:28

Ответ: Проблема: PhysX и капсула для ГлавГероя.
 
Контактами делай прыжок. Вычисляй какой контакт находится самым нижним и если этот контакт задействован - прикладывай силу к телу. Всё просто =) реализуется двумя-тремя условиями и одним циклом for to next =) Могу написать как это сделал я... ))

Gector 20.12.2009 01:00

Ответ: Проблема: PhysX и капсула для ГлавГероя.
 
Напиши если не сложно.
Вообще у меня сложность даже не в прыжке теперь, его я просёк как сделать можно(лучом можно мерить расстояние до "пола"). Проблема теперь в том, чтобы он не ускорялся (тоесть "ходил" как нормальный Гордон Фримен))) и поворачивался куда смотрит камера...

St.AnGer 20.12.2009 11:32

Ответ: Проблема: PhysX и капсула для ГлавГероя.
 
Через луч будет глючить. Не всегда находит пол под собой. Вот мой код, он конечно тоже не оч хороший, но работает по крайней мере всегда =)

Код:

        If xKeyHit(key_jump) Then
                If pxGetContacts(body)>0 Then       
                        For i=0 To pxGetContacts(body)-1
                                x# = pxContactGetPointX(body,i)
                                y# = pxContactGetPointY(body,i)
                                z# = pxContactGetPointZ(body,i)       
                        Next
                        If  x#>pxBodyGetPositionX(body)-.5 And x#<pxBodyGetPositionX(body)+.5 And y#>pxBodyGetPositionY(body)-2.6 And y#<pxBodyGetPositionY(body)-0 And z#>pxBodyGetPositionZ(body)-.4 And z#<pxBodyGetPositionZ(body)+.4 Then
                                pxBodyAddLocalForce body,0,pxBodyGetMass(body)/13,0,2
                        End If
                End If
        End If


Body - тело игрока. Цифры рядом с координатами pxBodyGetPositionX,Y,Z означают размеры игрока (по оси X и Z +- радиус капсулы игрока, по оси Y позиция капсулы и её нижняя точка). Вообщем координаты в пределах от [-радиус;радиус],[0;-высота капсулы],[-радиус;радиус]
Радиус капсулы желательно указывать несколько меньший, чем есть (если радиус 1, то написать +-.9).
Нижнюю точку чуть чуть ниже (то есть если размер капсулы 2, то нижняя точка должна быть -2.1)

Если что то не понял - пиши


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

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