[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, turBO, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Проверка столкновений
Проверка столкновений
VirusssДата: Пятница, 26.03.2010, 20:22 | Сообщение # 1
Подполковник
Группа: Пользователи
Сообщений: 412
Награды: 2
Репутация: 5
Статус: Offline
Блин, сломал мозги и не могу вспомнить как проверить на столкновение например тип 1 с типом 2! Помогите плииз..........!!!

Добавлено (26.03.2010, 20:22)
---------------------------------------------
Global map=LoadAnimMesh("D:\RapidShare\map1.b3d")
Global sh=FindChild(map,"Sphere01")
...
Global ground=FindChild(map,"Box01")
...
EntityType sh,1
EntityType ground,3
....
Collisions 1,3,2,3

вроде есть коллизия, но шарик проесто и непринужденно проходит сквозь второй обьект...я опять что то забыл?

 
SpidyДата: Пятница, 26.03.2010, 20:24 | Сообщение # 2
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Quote
If CountCollisions( b\sprite )
If EntityCollided( b\sprite,TYPE_TERRAIN )
EmitSound boom,b\sprite
ex#=EntityX(b\sprite)
ey#=EntityY(b\sprite)
ez#=EntityZ(b\sprite)
TFormPoint( ex,ey,ez,0,land )
hi#=TerrainHeight( land,TFormedX(),TFormedZ() )
If hi>0
hi=hi-.02:If hi<0 Then hi=0
ModifyTerrain land,TFormedX(),TFormedZ(),hi,True
EndIf
CreateSpark( b )
FreeEntity b\sprite
Delete b
Return
EndIf
If EntityCollided( b\sprite,TYPE_SCENERY )
For k=1 To CountCollisions( b\sprite )
If GetEntityType( CollisionEntity( b\sprite,k ) )=TYPE_SCENERY
cx#=CollisionX( b\sprite,k )
cy#=CollisionY( b\sprite,k )
cz#=CollisionZ( b\sprite,k )
nx#=CollisionNX( b\sprite,k )
ny#=CollisionNY( b\sprite,k )
nz#=CollisionNZ( b\sprite,k )
th.Hole=New Hole
th\alpha=1
th\sprite=CopyEntity( hole_sprite )
PositionEntity th\sprite,cx,cy,cz
AlignToVector th\sprite,-nx,-ny,-nz,3
MoveEntity th\sprite,0,0,-.1
Exit
EndIf
Next
EmitSound boom,b\sprite
CreateSpark( b )
FreeEntity b\sprite
Delete b
Return
EndIf
EndIf
b\time_out=b\time_out-1
If b\time_out=0
FreeEntity b\sprite
Delete b
Return
EndIf


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
VirusssДата: Суббота, 27.03.2010, 06:44 | Сообщение # 3
Подполковник
Группа: Пользователи
Сообщений: 412
Награды: 2
Репутация: 5
Статус: Offline
ясно, а как с кодом быть?

Добавлено (27.03.2010, 06:44)
---------------------------------------------

Quote (Virusss)
вроде есть коллизия, но шарик проесто и непринужденно проходит сквозь второй обьект...я опять что то забыл?

а что в коде неправильно?Вроду ведь все есть...
 
deejexДата: Суббота, 27.03.2010, 09:31 | Сообщение # 4
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
Virusss, UpdateWorld() слышал о таком?



 
VirusssДата: Суббота, 27.03.2010, 18:10 | Сообщение # 5
Подполковник
Группа: Пользователи
Сообщений: 412
Награды: 2
Репутация: 5
Статус: Offline
придставь себе - слышал и даже написал!
UpdateWorld()
RenderWorld()
Flip
Вот. правильный порядок?

просто еси что то я могу код выложить он не большой.

 
deejexДата: Суббота, 27.03.2010, 20:56 | Сообщение # 6
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
попробуй так:

Global map=LoadAnimMesh("D:\RapidShare\map1.b3d")
Global sh=FindChild(map,"Sphere01")
EntityParent sh,0
...
Global ground=FindChild(map,"Box01")
EntityParent ground,0
...
EntityType sh,1
EntityType ground,3
....
Collisions 1,3,2,3




 
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Проверка столкновений
  • Страница 1 из 1
  • 1
Поиск: