forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Капсульный игрок в PhysX Wrapper (http://forum.boolean.name/showthread.php?t=11486)

JohnAustin 15.12.2009 20:29

Капсульный игрок в PhysX Wrapper
 
Люди - программисты, помогите, пожалуйста. Срочно нужна ваша помощь. Нужен пример создания капсульного игрока сделанного с помощью PhysX Wrapper. Вроде бы игрока сделали, но не можем его сдвинуть с места, вернее физическую капсулу, в которой находиться игрок. Уважаемые люди знающие PhysX Wrapper помогите, пожалуйста, а то мозг совсем скоро вскипит:SOS:

NitE 15.12.2009 20:37

Ответ: Капсульный игрок в PhysX Wrapper
 
в порыве страсти ты забыл сказать в чем проблема.

JohnAustin 15.12.2009 20:42

Ответ: Капсульный игрок в PhysX Wrapper
 
NitE, смеялся минут 5 над ответом:-D Но там ведь написано что не могу сдвинуть капсулу с места вместе с игроком. Какая команда для этого служит. Может быть у тебя есть пример?

NitE 15.12.2009 20:44

Ответ: Капсульный игрок в PhysX Wrapper
 
http://forum.xors3d.com/download/file.php?id=66
вот волшебный файл, там ответы на все твой вопросы.

JohnAustin 15.12.2009 20:46

Ответ: Капсульный игрок в PhysX Wrapper
 
Ну Help это хорошо, но все таки лучше когда есть пример, т.к. пример можно разобрать

H@NON 15.12.2009 20:55

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

JohnAustin 15.12.2009 20:58

Ответ: Капсульный игрок в PhysX Wrapper
 
Ну Help это хорошо, но все таки лучше когда есть пример, т.к. пример можно разобрать. Когда есть пример все более-менее лучше усваиваться

H@NON 15.12.2009 21:28

Ответ: Капсульный игрок в PhysX Wrapper
 
я могу тебе кинуть код реализации, только ты ведь не поймешь чужой код, так как даже не знаешь за что отвечают команды.

St.AnGer 16.12.2009 11:33

Ответ: Капсульный игрок в PhysX Wrapper
 
Двигай через pxBodyAddLocalForce и pxBodyGetLocalLinearSpeed по нужным осям. Чтобы получилась остановка, добавляй силу с обратной pxBodyGetLocalLinearSpeed тоже по осям движения.

вот примерно так:
Код:

If KeyDown(17)
                pxBodyAddLocalForce(Body%,0,0,(3-pxBodyGetLocalLinearSpeedZ(Body%))*force#,0)
        Else If KeyDown(31)
                pxBodyAddLocalForce(Body%,0,0,-(3+pxBodyGetLocalLinearSpeedZ(Body%))*force#,0)
        Else
                pxBodyAddLocalForce(Body%,0,0,-pxBodyGetLocalLinearSpeedZ(Body%)*force#,0)
        End If
                       
        If KeyDown(30)
                pxBodyAddLocalForce(Body%,-(3+pxBodyGetLocalLinearSpeedX(Body%))*force#,0,0,0)
        Else If KeyDown(32)
                pxBodyAddLocalForce(Body%,(3-pxBodyGetLocalLinearSpeedX(Body%))*force#,0,0,0)
        Else
                pxBodyAddLocalForce(Body%,-pxBodyGetLocalLinearSpeedX(Body%)*force#,0,0,0)
        End If

С переменной force побалуйся сам.


З.Ы. Тема обсуждалась не единожды......

JohnAustin 17.12.2009 16:45

Ответ: Капсульный игрок в PhysX Wrapper
 
Graphics3D 800,640
SetBuffer BackBuffer()


;light
light=CreateLight(1)
PositionEntity light,0,50,20

;cam
cam=CreateCamera()
PositionEntity cam,0,5,-5


;plane
plane=CreatePlane()
tile1=LoadTexture("d:\bcm\models\88sad\O23SCV96.jp g")
ScaleTexture tile1,5,5
EntityTexture plane,tile1


;physX
pxCreateWorld(1, "key")
pxSetGravity(0,-30,0)

;create capsule
capsule2 = Create_Px_Capsule(Mesh_Capsule(2, 1), 2, 1)
pxBodySetPosition(capsule2, 0, 5, 0)



Repeat

If KeyDown(17)
pxBodyAddLocalForce(capsule2,0,5,5,0)
EndIf



pxRenderPhysic(60,0)
Update_Px_Cube()

UpdateWorld()
RenderWorld()
Flip
Until KeyHit(1)
End

Type Px_Cube
Field cube_body%
Field cube_mesh%
End Type

Function Create_Px_Capsule(mesh, height#, radius#)
ocu.Px_Cube = New Px_Cube

ocu\cube_mesh = CopyEntity (mesh)


ocu\cube_body = pxBodyCreateCapsule%(height, radius,2)
pxBodySetPosition(ocu\cube_body, 0, 0, 0)

Return ocu\cube_body
End Function

Function Update_Px_Cube()
For ocu.Px_Cube = Each Px_Cube
pxBodySetEntity(ocu\cube_mesh, ocu\cube_body)
Next
End Function

Function Mesh_Capsule(height#, radius#)
capsule=LoadMesh("d:\bcm\models\ivan\ivan.b3d")
HideEntity capsule
Return capsule
End Function

вот во общем код. В нем игрок стоит в физической капсуле. при нажатие на "W" он тупо падает вперед(((

JohnAustin 17.12.2009 20:50

Ответ: Капсульный игрок в PhysX Wrapper
 
Ладно люди извините что побеспокоил, уже сами разобрались


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

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