Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 30.01.2007, 02:19   #1
Horror
Бывалый
 
Регистрация: 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
HolyDel
 
Регистрация: 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
jimon
 
Сообщений: n/a
Re: Толкаем обЪект

Select A And B
или напрямую Select ( A And B )
тоесть
Z = A And B
Select Z

потому не является нарушением
 
Ответить с цитированием
Старый 30.01.2007, 14:42   #4
Horror
Бывалый
 
Регистрация: 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
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Толкаем обЪект

2Jimon, точняк.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поворот объекта на объект rr333 3D-программирование 11 02.01.2010 22:39
Курсор и объект Hurrit 3D-программирование 13 13.10.2009 22:33
Как узать объект? dimanche13 2D-программирование 23 21.07.2009 17:12
Объект & функция DRAG C++ 6 02.12.2007 03:18
В какой объект ткнули Данил BlitzMax 11 29.10.2007 12:47


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com