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=2552)

Horror 30.01.2007 02:19

Толкаем обЪект
 
всем привет как толкть объект? У меня тлько нормально толкает вперед и назад а влево и вправо неполучается!
вот мой код

Код:

SeedRnd MilliSecs()
Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()
Const Type_Plr=1, Type_Obj=2
cam=CreateCamera()
PositionEntity cam,0,4,0
light=CreateLight()
obj=CreateCube()
PositionEntity obj,0,1,10
EntityType obj, Type_Obj
plr=CreateSphere()
EntityRadius obj,1
EntityRadius plr,1
PositionEntity plr,0,1,5
EntityColor plr,0,128,128
EntityType plr, Type_Plr
Collisions Type_Plr, Type_Obj,2,3
Collisions Type_Obj, Type_Plr,2,3
 
Global A,B
Global pla#=30
Global cu#=0
While Not KeyDown(1)
If KeyDown(200) Then MoveEntity plr,0,0,pla*0.001
If KeyDown(208) Then MoveEntity plr,0,0,-pla*0.001
If KeyDown(203) Then MoveEntity plr,-pla*0.001 ,0,0
If KeyDown(205) Then MoveEntity plr,pla*0.001 ,0,0
MoveBox(plr, obj,Type_Obj)
 
RenderWorld
UpdateWorld
Text 10,10, "dx" +A + "dz"+B
Flip
Wend
End
Function MoveBox(mplr,mBox,tBox)
If EntityCollided (mplr, tBox) Then
cu=pla/100

A=EntityX(mplr)-EntityX(mbox)
B=EntityZ(mplr)-EntityZ(mbox)
Select A And B
Case A=0 And B>0 ;
MoveEntity mBox,0,0,cu
Case A=0 And B<0 ;
MoveEntity mBox,0,0,-cu
Case A>0 And B<0 ;
MoveEntity mBox,-cu,0,0
Case A<0 And B>0 ;
MoveEntity mBox,cu,0,0
End Select
EndIf
End Function


HolyDel 30.01.2007 02:37

Re: Толкаем обЪект
 
Select A And B

вопрос к гуру - выделенная строчка это не нарушение синтаксиса блитза?

вот рабочая функция:
Код:

Function MoveBox(mplr,mBox,tBox)
If EntityCollided (mplr, tBox) Then
cu=pla/100
A=EntityX(mplr)-EntityX(mbox)
B=EntityZ(mplr)-EntityZ(mbox)
If A=0 And B<0 Then TranslateEntity mBox,0,0,cu
If A=0 And B>0 Then TranslateEntity mBox,0,0,-cu
If B=0 And A>0 Then TranslateEntity mBox,-cu,0,0
If B=0 And A<0 Then TranslateEntity mBox,cu,0,0
EndIf
End Function


jimon 30.01.2007 09:09

Re: Толкаем обЪект
 
Select A And B
или напрямую Select ( A And B )
тоесть
Z = A And B
Select Z :)

потому не является нарушением

Horror 30.01.2007 14:42

HolyDel пасиб! то что надо!

теперь пытаюcb этот код прuладить к типам ну чтоб не один кубик толкать а много! и всебы хорошо но иногда тoлкаются не один объект а несколько..
подозреваю что вот ето надо моменять
If EntityCollided (plr, typeBox))
на чтото похоже но содержащие именно тот обект который толкаю а не весь тип)
ну вот код:
Код:

Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()
Const Type_Plr=1, TypeBOX=2
;===========================
Type TBox
Field ent
Field status=0
Field A,B
End Type
Global bx.TBox
Global pla#=30
Global cu#=0
;======================
bx.Tbox=New TBox
bx\ent=CreateCube()
PositionEntity bx\ent ,0,1,10
EntityType bx\ent,TypeBOX
bx.Tbox=New TBox
bx\ent=CreateCube()
PositionEntity bx\ent ,5,1,10
EntityType bx\ent,TypeBOX
 
plr=CreateSphere()
EntityRadius plr,1
PositionEntity plr,0,1,5
EntityColor plr,0,128,128
EntityType plr, Type_Plr
cam=CreateCamera()
PositionEntity cam,0,15,0
PointEntity cam,plr
EntityParent cam,plr
light=CreateLight(cam)
Collisions Type_Plr, TypeBOX,2,3
Collisions TypeBOX, Type_Plr,2,3
 
 
 
While Not KeyDown(1)
If KeyDown(200) Then MoveEntity plr,0,0,pla*0.001
If KeyDown(208) Then MoveEntity plr,0,0,-pla*0.001
If KeyDown(203) Then MoveEntity plr,-pla*0.001 ,0,0
If KeyDown(205) Then MoveEntity plr,pla*0.001 ,0,0
MoveBox(plr, TypeBOX)
 
RenderWorld
UpdateWorld
 
Flip
Wend
End
Function MoveBox(mplr,typBox)
For bx.TBox = Each TBox
If EntityCollided (mplr, typBox) Then
cu=pla/100
bx\A=EntityX(mplr)-EntityX(bx\ent)
bx\B=EntityZ(mplr)-EntityZ(bx\ent)
If bx\A=0 And bx\B<0 Then TranslateEntity bx\ent,0,0,cu
If bx\A=0 And bx\B>0 Then TranslateEntity bx\ent,0,0,-cu
If bx\B=0 And bx\A>0 Then TranslateEntity bx\ent,-cu,0,0
If bx\B=0 And bx\A<0 Then TranslateEntity bx\ent,cu,0,0
End If
Next
End Function


HolyDel 31.01.2007 02:06

Re: Толкаем обЪект
 
2Jimon, точняк.


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

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