GOODVEEN | Дата: Среда, 24 Декабря 2008, 11:19 | Сообщение # 1 |
Бывалый
Группа: Участники
Сообщений: 67
Награды: 0
Замечания: 0%
Статус:
Профессия: Немного прогаю немного Моделю)
| Дорогие форумчане, у меня возникла некая проблема, которую я не в силах решить... Дело в том, что я никак не могу создать пулю в Blitz3D Сложность в том что мой персонаж изпользует GunKata если кто-то смотрел Equilibrium то поймет в общих чертах обьясню, что Gunkata-это система доевых движений с оружием при этом человек поражает максимально большей количество противников, стреляя в разные стороны, не прицеливаясь Теперь кодовая сторона: я сделал анимации, сделал на пистолетах думми куда должны быть привязаны пули. Пожалуйста разъясните мне грамотно, процесс создания пули в коде... именно на моем примере Буду очень благодарен вот мой пример http://webfile.ru/2504439
Чем бы дитя не тешилось, лишь бы ноги в рот не клало)))
Сообщение отредактировал GOODVEEN - Среда, 24 Декабря 2008, 11:25 |
|
| |
DarkMedveD | Дата: Суббота, 27 Декабря 2008, 16:28 | Сообщение # 5 |
Профи
Группа: Участники
Сообщений: 260
Награды: 0
Замечания: 0%
Статус:
Профессия: Програмист,немного моделлер
Команда: Сам Себе НачальниГ
Проектов: 2
| Попробуй Узнать коардинаты цели(EntityX(...) EntityY(...) EntityZ(...) а затем проверь If EntityX(Bullet) > EntityX(...) MoveEntity Bullet,5,00 endif If EntityX(Bullet) < EntityX(...) MoveEntity Bullet,-5,0,0 endif ......... If EntityZ(Bullet) < EntityZ(...) MoveEntity Bullet,0,0,-5 endif Должно работать
Это и есть Zoom-Zoom
Сообщение отредактировал DarkMedveD - Суббота, 27 Декабря 2008, 16:28 |
|
| |
mkhan | Дата: Воскресенье, 28 Декабря 2008, 21:38 | Сообщение # 6 |
Профи
Группа: Участники
Сообщений: 254
Награды: 0
Замечания: 0%
Статус:
| помогите сделать скорострельность. сами пули я брал от сюда! Code Graphics3D 800, 600, 0, 1 ;3D graphics at a resolution of 800x600 SetBuffer BackBuffer() ;do all drawing to the back drawing buffer Const PLAYER_COL= 1 Const LEVEL_COL = 2 Const ENEMY_COL = 3 Const BULLET_COL= 4 Type bullettype ;set up the bullet type Field entityhandle ;create a field to contain the handle of the bullets mesh End Type Type badguytype ;set up the badguy type Field entityhandle ;will contain the handle of the badguys mesh Field state ;will contain the state that the badguy is currently in End Type light = CreateLight() ;Create a light to see RotateEntity light, 30, 30, 0 ;angle the light player = CreatePivot() ;A simple pivot is all we need to represent the player camera = CreateCamera(player) ;create the camera and attach it to the player CameraRange camera, .01, 250 ;set the camera range to something reasonable ;level = LoadMesh("level.b3d") ;load in the level mesh level = CreateCube():ScaleEntity level,50,50,50:FlipMesh level:MoveEntity level,0,50,0:EntityColor level,20,20,200 levelfloor=CreatePlane():MoveEntity levelfloor,0,.002,0:EntityColor levelfloor,0,100,0 ;plane not needed, added it just for color ;weapon1 = LoadMesh("pistol.b3d", camera) ;load in the weapon mesh and attach it to the camera weapon1 = CreateCylinder(32, 1, camera):RotateMesh weapon1, 90, 0, 0:ScaleEntity weapon1, .05, .05, .2:EntityColor weapon1, 50, 50, 50 ;bulletmesh = LoadMesh("bullet.b3d") ;load in a bullet mesh (this will be a template mesh) bulletmesh = CreateCone():RotateMesh bulletmesh,90,0,0:ScaleEntity bulletmesh,.1,.1,.1 EntityType bulletmesh, BULLET_COL ;set up collision type for the bullet EntityRadius bulletmesh, .01 ;set up collision radius for the bullet ;badguymesh = LoadMesh("badguy.b3d") ;load in badguy mesh (this will also be a template mesh) badguymesh = CreateCylinder():ScaleEntity badguymesh,.3,.95,.125;.6 wide, 1.9 tall, .25 thick EntityType badguymesh, ENEMY_COL ;set up collision type for the badguy EntityRadius badguymesh, .3, .95 ;set up collision radius for the badguy (1.9 meters tall, .6 meters wide) HideEntity bulletmesh ;hide the template meshes since they are not actual objects HideEntity badguymesh ;this will also exclude them from collisions For iter = 1 To 10 ;create some badguys from the template badguy mesh badguy.badguytype = New badguytype ;create a new badguy badguy\entityhandle = CopyEntity(badguymesh) ;give him a mesh badguy\state = Rnd(1, 2) ;1=Guard 2=Search 3=Evade 4=Attack 5=Dead Next MoveEntity camera, 0, .9, 0 ;move camera up to height of players head (also moves weapon) MoveEntity weapon1, .1, -.15, .1 ;move weapon to bottom right of camera MoveEntity player, 20, 1, -20 ;move the player to the starting position For badguy = Each badguytype ;iterate through all of the badguys PositionEntity badguy\entityhandle, Rnd(100)-50, .95, Rnd(100)-50 ;move the badguy to a random starting position Next EntityType player, PLAYER_COL ;set up collision type for the player EntityRadius player, .3, .95 ;set up the players collision radius (1.9 meters tall, .6 meters wide) EntityType level, LEVEL_COL ;set up collision type for the level Collisions PLAYER_COL, LEVEL_COL, 2, 2 ;player to level Collisions PLAYER_COL, ENEMY_COL, 1, 2 ;player to badguy Collisions ENEMY_COL, LEVEL_COL, 2, 2 ;badguy to level Collisions BULLET_COL, LEVEL_COL, 2, 1 ;bullet to level Collisions BULLET_COL, ENEMY_COL, 2, 1 ;bullet to badguy While Not KeyHit(1) ;ESC key RotateEntity camera,Sin(MilliSecs()*.05)*.5,0,Sin(MilliSecs()*.05)*.5 wkey = KeyDown(17) ;collect user input skey = KeyDown(31) ;It's a good practice to collect these inputs only once akey = KeyDown(30) ;per loop. This will prevent odd behaviors from happening, dkey = KeyDown(32) ;for instance if the state of a key changes between multiple mouse1 = MouseHit(1) ;checks of that key while still in the same loop. If wkey Then MoveEntity player, 0, 0, .1 ;Forward - w key If skey Then MoveEntity player, 0, 0, -.1 ;Back - s key If akey Then MoveEntity player, -.1, 0, 0 ;Left - a key If dkey Then MoveEntity player, .1, 0, 0 ;Right - d key TurnEntity player, 0, -MouseXSpeed()/5.0, 0 ;rotate player Pivot according to mouse X movement TurnEntity camera, MouseYSpeed()/5.0, 0, 0 ;rotate camera up/down according to mouse Y movement If EntityPitch(camera) < -45 ;don't allow camera to look below -45 degrees RotateEntity camera, -45, EntityYaw(camera), EntityRoll(camera) EndIf If EntityPitch(camera) > 45 ;don't allow camera to look above 45 degrees RotateEntity camera, 45, EntityYaw(camera), EntityRoll(camera) EndIf MoveMouse GraphicsWidth()/2, GraphicsHeight()/2 ;reset mouse position to middle of screen TranslateEntity player, 0, -.1, 0 ;simple gravity If mouse1 ;check if left mouse button was pressed bullet.bullettype = New bullettype ;create a bullet bullet\entityhandle = CopyEntity(bulletmesh) ;create the bullet mesh PositionEntity bullet\entityhandle, EntityX(weapon1, 1), EntityY(weapon1, 1), EntityZ(weapon1, 1) ;place the bullet at the guns position RotateEntity bullet\entityhandle, EntityPitch(weapon1, 1), EntityYaw(weapon1, 1), EntityRoll(weapon1, 1);orientate the bullet with the gun ResetEntity bullet\entityhandle ;otherwise bullet could hit enemy while moving from 0,0,0 to current position EndIf For thisbullet.bullettype = Each bullettype ;iterate through all of the bullets MoveEntity thisbullet\entityhandle, 0, 0, 2 ;move the bullet forward along the bullets Z axis If Abs(EntityX(thisbullet\entityhandle, 1)) > 10000 ;check if the bullet is way out of bounds FreeEntity thisbullet\entityhandle ;delete the bullet mesh Delete thisbullet ;delete the bullet ElseIf Abs(EntityY(thisbullet\entityhandle, 1)) > 10000 ;check if the bullet is way out of bounds FreeEntity thisbullet\entityhandle ;delete the bullet mesh Delete thisbullet ;delete the bullet ElseIf Abs(EntityZ(thisbullet\entityhandle, 1)) > 10000 ;check if the bullet is way out of bounds FreeEntity thisbullet\entityhandle ;delete the bullet mesh Delete thisbullet ;delete the bullet EndIf Next UpdateWorld ;figures out collisions For thisbullet = Each bullettype ;iterate through all of the bullets If CountCollisions(thisbullet\entityhandle) > 0 ;check if bullet collided with something enemyhit = EntityCollided(thisbullet\entityhandle, 3) ;note which enemy bullet collided with (if any) If enemyhit > 0 Then KillBadGuy(enemyhit) ;enemyhit contains entity handle of enemy that was hit FreeEntity thisbullet\entityhandle ;delete the bullet mesh Delete thisbullet ;delete the bullet EndIf Next RenderWorld ;draws the 3d scene Flip ;displays the scene to the screen Wend ;loop until the ESC key is pressed End Function KillBadGuy(enemyhit) For thisbadguy.badguytype = Each badguytype ;iterate through all of the badguys If enemyhit = thisbadguy\entityhandle ;check if the enemy hit = this badguy If thisbadguy\state <> 5 ;check if badguy is alive thisbadguy\state = 5 ;dead ;make him dead EntityType thisbadguy\entityhandle, 0 ;turn off collisions for this badguy RotateEntity thisbadguy\entityhandle, 90, 0, 0 ;make him horizontal TranslateEntity thisbadguy\entityhandle, 0, -.9, 0 ;set him on the ground Exit ;exits the badguy For-Next loop (no need to check rest of badguys) EndIf EndIf Next End Function
|
|
| |