|
3D-программирование Вопросы, касающиеся программирования 3D мира |
30.01.2007, 02:19
|
#1
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Толкаем обЪект
всем привет как толкть объект? У меня тлько нормально толкает вперед и назад а влево и вправо неполучается!
вот мой код
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
|
(Offline)
|
|
30.01.2007, 02:37
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
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
|
(Offline)
|
|
30.01.2007, 09:09
|
#3
|
|
Re: Толкаем обЪект
Select A And B
или напрямую Select ( A And B )
тоесть
Z = A And B
Select Z
потому не является нарушением
|
|
|
30.01.2007, 14:42
|
#4
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
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
|
(Offline)
|
|
31.01.2007, 02:06
|
#5
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Толкаем обЪект
2Jimon, точняк.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:50.
|