forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Обьект. (http://forum.boolean.name/showthread.php?t=18351)

Demon 11.07.2013 16:50

Обьект.
 
Нужна помощь:
1.Как сделать так чтобы при приближению к объекту он в тебя выстреливал к примеру стрелой.
2.Как сделать чтобы при приближению к объекту он двигался к игроку.:)

ant0N 11.07.2013 17:31

Ответ: Обьект.
 
1.Как сделать так чтобы при приближению к объекту он в тебя выстреливал к примеру стрелой.
создаешь тип пули
Код:

Type TBullet
  field mesh
  field x#,y#,z#
End Type

функцию создания пули:
Код:

Function CreateBullet.TBullet(x,y,z)
  b.TBullet = New TBullet
  b\mesh = CreateSphere(8)
  b\x = x
  b\y = y
  b\z = z
end function

Функция обновления пуль:
Код:

Function UpdateBullet()
  for b.TBullet = Each TBullet
  Moveentity b\mesh, 0,0,5
end function

создаешь функцию стрельбы для объекта
Код:

function fire()
  timer = Millisecs()
  if timer < Millisecs()
      CreateBullet(EntityX(object),EntityY(object),EntityZ(object))
      timer = Millisecs + 2000
  endif
end function

------------------------------------
Потом:
Код:

UpdateBullet() ; вставляешь в главный цикл
и в главном цикле пишешь
Код:

if EntityDistance object, player
  fire()
endif


PS. пишу вслепую, так что могу ошибиться

Demon 11.07.2013 17:52

Ответ: Обьект.
 
А можно примером выложить? :)

ant0N 11.07.2013 19:09

Ответ: Обьект.
 
у меня блица нет и ставить не хочу
покопайся в моей игре, там все это есть.

И вообще я ща винду, мать ее, сносить буду!

Demon 11.07.2013 19:23

Ответ: Обьект.
 
:ok: Ок

Nex 12.07.2013 02:52

Ответ: Обьект.
 
Код:

Graphics3D 1024,768,32,2
SetBuffer (BackBuffer ())

Global camera,player,bot,bot_start_position

Global player_life# = 100.0

Global dt# = 0.001
Global move_speed# = 100.0

Global agrDist# = 15.0
Global bot_x#=10,bot_z#

Global time_shoot%, time_shoot_delay%=1000

Type TBullet
        Field ent%,life#
End Type

camera = CreateCamera ()
        RotateEntity camera,50,0,0
        PositionEntity camera,0,15,-15
light = CreateLight ()
        RotateEntity light,65,0,0

ground = CreatePlane ()
        EntityColor ground,121,141,40

player = CreateCube ()
        EntityColor player,105,188,217
        PositionEntity player,-10,1,0

bot_start_position = CreateCube ()
        EntityColor bot_start_position,50,50,50
        EntityAlpha bot_start_position,0.4
        ScaleEntity bot_start_position,0.3,0.3,0.3
        PositionEntity bot_start_position,bot_x,1,bot_z
bot = CreateCube  ()
        EntityColor bot,128,128,128
        PositionEntity bot,bot_x,1,bot_z

        SetFont (LoadFont ("Verdana",15,1,0,0))

While Not KeyHit (1)
        UpdatePlayer ()
        UpdateBot ()
        UpdateBullet ()
UpdateWorld ()
RenderWorld ()
        Draw2D ()
Flip
Wend
End

Function CreateBullet (parent%=0)
        b.TBullet = New TBullet
                b\life = 100
                b\ent = CreateCube (parent)
                          EntityColor b\ent,165,110,37
                        ScaleEntity b\ent,0.3,0.3,0.3
                EntityParent b\ent,0
End Function

Function UpdateBullet ()
        For b.TBullet = Each TBullet
                If b\life <=0 Then
                        FreeEntity b\ent
                        Delete b
                Else
                        b\life = b\life -1
       
                        MoveEntity b\ent,0,0,((move_speed*4.0)*dt)
       
                        If EntityDistance (b\ent,player) <1.5 Then
                                player_life = player_life -10
                                FreeEntity b\ent
                                Delete b
                        EndIf
                EndIf
        Next
End Function

Function UpdatePlayer ()
        If KeyDown (200) Then MoveEntity player,0,0,move_speed*dt
        If KeyDown (208) Then MoveEntity player,0,0,-move_speed*dt
        If KeyDown (203) Then MoveEntity player,-move_speed*dt,0,0
        If KeyDown (205) Then MoveEntity player,move_speed*dt,0,0
End Function

Function UpdateBot ()
        If EntityDistance# (bot,player) <agrDist# Then
                EntityColor bot,255,0,0
                               
                PointEntity bot,player
                MoveEntity bot,0,0,(move_speed/4.0)*dt

                If time_shoot <= MilliSecs () Then
                        CreateBullet (bot)
                        time_shoot = MilliSecs () + time_shoot_delay
                EndIf
        Else
                EntityColor bot,128,128,128

                PointEntity bot, bot_start_position
                MoveEntity bot,0,0,(move_speed/4.0)*dt
        EndIf
End Function

Function Draw2D ()
        Color 0,0,0
                Text 11,11,"Life: "+player_life
        Color 255,255,255
                Text 10,10,"Life: "+player_life
End Function


Demon 12.07.2013 15:28

Ответ: Обьект.
 
Оо спасибо за отличный пример.:ok:


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot