Вы в своей жизни хоть когда нибудь проходили сквозь стены или двигали различные объекты сквозь стены или полы? НЕТ. Да, прикольно наверное купили вы компьютер, поставили на стол, а он провалился на первый этаж, да и от туда полетел сквозь землю. Так вот и в компьютерных играх такого недолжно быть. Для этого в Blitz3D есть детектор обнаружения столкновения. Для начала при создании, какого либо объекта указываем его тип коллизии: EntityType (указатель на объект),(тип столкновения)
После таких вот действий вы можете создавать хоть, сколько объектов и присваивать им тип столкновения. Главными строками являются первые две. Если посмотреть справочник по команде Collisions , то там вы увидите ещё и другие параметры, их вы будете использовать для конкретно своих целей.
Сейчас уже существует очень много библиотек и доп. модулей, которые организуют такую физику, которую неотличить от жизненной, например библиотека ODE, Tokamak, PhysicX и т.д. И я в скором будущем приведу пример использования одной из этих библиотек. А сейчас вот вам пример стандартных Blitz`евских функций.
While Not KeyDown(1) mxspd#=MouseXSpeed()*0.25 myspd#=MouseYSpeed()*0.25 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 campitch#=EntityPitch(CamCollision)+myspd# If campitch#<-85 Then campitch#=-85 If campitch#>85 Then campitch#=85 RotateEntity CamCollision,campitch#,EntityYaw(CamCollision)-mxspd#,EntityRoll(CamCollision)
If KeyDown(17) MoveEntity CamCollision,0,0,.2 If KeyDown(31) MoveEntity CamCollision,0,0,-.2 If KeyDown(32) MoveEntity CamCollision,.2,0,0 If KeyDown(30) MoveEntity CamCollision,-.2,0,0
RenderWorld UpdateWorld If KeyHit(57) Then w=1-w Wireframe w Text 10,10,"----------TESTING----------" Flip Wend End