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


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, turBO, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » АІ
АІ
Pro_100_DenДата: Пятница, 01.05.2009, 13:28 | Сообщение # 1
ламер
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
помогите пожалуста зделать так чтоб монстр двигался к игроку и плювался в него кислотой. И вобще обясните пожалуйста хто может, как делать нормальное АІ.
и еще никак немогу зделать коллизию. Заранее спасибо
вот код:
Graphics3D 1024,768,32
SetBuffer FrontBuffer ()

Global cam,campitch#,camyaw#,mvx#,mvy#,mvz#
Global gfxCross = LoadImage("cross.bmp")
Global player=CreateSphere()
PositionEntity player,0, 0.3, 2
EntityRadius player, 1
cam=CreateCamera(player)

Collisions TypePlayer, TypeWall, 2, 3

Global Floortex=LoadTexture("GROUND.jpg")
Floor1=CreatePlane (4)
EntityAlpha Floor1,1
PositionEntity Floor1,0,-1,0
EntityTexture Floor1, floortex

;при загрузке программы
flame = CreateLight(2,drum)
PositionEntity flame,0,0,0
LightColor flame,255,150,150
LightRange flame,10

;в главном цикле:
LightRange flame,Rnd(1,20)

hoos=LoadMesh ("дом .3DS")
ScaleMesh hoos,0.018,0.018,0.018
PositionEntity hoos,0,-1,10

drum=LoadMesh("костер.3ds")
ScaleMesh drum,0.01,0.01,0.01
PositionEntity drum,0,-1,0

создание монста
gargoyle=LoadMD2( "Tris.md2" )
ScaleEntity gargoyle,0.01,0.01,0.01
; Load md2 texture
garg_tex=LoadTexture( "Skin.bmp" )

; Apply md2 texture to md2
EntityTexture gargoyle,garg_tex
AnimateMD2 gargoyle,1,0.05,20,30

pistol=LoadMesh ("цфв.3DS")
ScaleEntity pistol,0.020,0.0120,0.020
PositionEntity pistol,0.1,-0.9,1

spr = CreateSprite(drum)
PositionEntity spr,0.1,.6,0.350
ScaleSprite spr,.5,.8
anim_tex2=LoadAnimTexture("fireanim.jpg",18,128,256,0,8 )
EntityBlend spr,3

Alpha#=1
sp = CreateSprite(player)
PositionEntity sp,0,0,5
anim_tex=LoadAnimTexture("pfx_flame.bmp",14,64,64,0,4 )
EntityBlend sp,3

While Not KeyHit(1)

;Cycle through anim frame values. 100 represents Delay, 39 represents no. of anim frames
frame=MilliSecs()/40 Mod 8
EntityTexture spr,anim_tex2,frame
frame=MilliSecs()/2 Mod 4
EntityTexture sp,anim_tex,frame

If alpha#<1.0 Then alpha# = 0
If alpha#>-1 Then alpha# = -1

If MouseDown( 1 )=True And alpha#<1 Then Alpha#=Alpha#+3
EntityAlpha sp,Alpha#

V#=0.5
u#=70;предельный угол
TurnEntity cam,MouseYSpeed(),0,0
TurnEntity player,0,-MouseXSpeed(),0

If KeyDown(200) MoveEntity player, 0, 0, 0.2
If KeyDown(208) MoveEntity player, 0, 0, -0.2
If KeyDown(203) MoveEntity player, -0.2, 0, 0
If KeyDown(205) MoveEntity player, 0.2, 0, 0
If KeyDown(57) MoveEntity player, 0, 0.2, 0

If KeyDown(2) SpriteViewMode sp, 1
If KeyDown(3) SpriteViewMode sp, 2

MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
If Abs(EntityPitch#(cam))>u# RotateEntity cam,u#*Sgn(EntityPitch#(cam)),0,0

MoveEntity gargoyle,PickedX() ,PickedY(),PickedZ()

PointEntity gargoyle,player

mvy=mvy-0.0
If EntityCollided(player,TypeWall)
mvy=mvy+0.0
EndIf

mvx=mvx/1.2
mvy=mvy/1.2
mvz=mvz/1.2
MoveEntity player,mvx,0,mvz
TranslateEntity player,0,mvy,0

AmbientLight 50,50,50

RenderWorld
UpdateWorld
fr = fr + 1
If MilliSecs() - frTime >= 1000
fps = fr
fr = 0
frTime = MilliSecs()
EndIf
Text 10,110,"FPS : " + fps,1
Text 10,10, "Enemies Left: "+Str( AliveEnemy )
DrawImage(gfxCross, GraphicsWidth()/2-16, GraphicsHeight()/2-16 )

Flip

Wend
End

 
blackdrummerДата: Пятница, 01.05.2009, 18:46 | Сообщение # 2
ламер
Группа: Пользователи
Сообщений: 24
Награды: 0
Репутация: 0
Статус: Offline
про коллизию смотри в предыдущих темах. насчет AI... нужно просчитывать все варианты поведения объекта. например: чтобы твоему монстру плюнуть в игрока кислотой, надо сначала к нему подойти(при этом монстр должен быть всегда повернут к игроку). при соблюдении определенной дистанции(между игроком и монстром) монстр прекращает функцию "движение" и исполняет функцию "плевок". вот и все. может потом выложу свой пример...

Сообщение отредактировал blackdrummer - Суббота, 02.05.2009, 14:08
 
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » АІ
  • Страница 1 из 1
  • 1
Поиск: