Ilman objectpickiä pyöri reilusti yli 600vihollista ilman pelin hidastumista,mut vihollisetkin käveli seinii päin vähän turhan paljon.
Code: Select all
SCREEN 1280,1024
FrameLimit 60
Type viholliset
Field obj
Field nopeus
Field health
Field ajastin
Field luku1
Field uusisuunta
Field aika
Field aikaväli
Field suunta
Field tarkastaja
Field tarkastaja_dist
Field tarkastaja_distl
Field tarkastaja_distr
End Type
maa1=LoadMap("media\tekoäly.til","media\tileset.bmp")
ObjectPickable maa1,ON
crosshair=LoadObject("media\target.bmp")
ShowMouse OFF
soldier= LoadObject ("media\soldier.bmp",4)
ShowObject soldier,OFF
Global määrä
Repeat
PositionObject crosshair,MouseWX(),MouseWY()
If Keydown(28) Then
makevihollinen(soldier,4,100,maa1)
EndIf
If LeftKey() Then MoveCamera -2:ElseIf RightKey() Then MoveCamera 2
move_enemies(crosshair )
DrawGame
DrawToWorld 0,0,0
Text 0,20,"FPS : "+FPS()
Text 0,40,"Enemies : "+määrä
Text 0,60,"MWX : " + MouseWX()+" MWY : " + MouseWY()
DrawScreen
Forever
Function makevihollinen(kuva,nopeus,health,maa)
newenemy.viholliset=New(viholliset)
määrä=määrä+1
newenemy\obj=CloneObject(kuva)
newenemy\tarkastaja=MakeObject()
SetupCollision newenemy\obj,maa,2,4,2
newenemy\nopeus=nopeus
PositionObject newenemy\obj,Rand(-300,300),Rand(-250,250)
End Function
Function move_enemies(tähtäin)
For newenemy.viholliset= Each viholliset
If newenemy\aika=0 Then
newenemy\aikaväli=Rand(1000,1600)
newenemy\ajastin=Timer()
newenemy\aika=1
EndIf
MoveObject newenemy\obj,newenemy\nopeus
If CountCollisions(newenemy\obj)>0 Then TurnObject newenemy\obj,180:MoveObject newenemy\obj,5
ObjectPick newenemy\obj
newenemy\tarkastaja_dist=Distance(ObjectX(newenemy\obj),ObjectY(newenemy\obj),PickedX(),PickedY())
If Timer()>newenemy\ajastin+newenemy\aikaväli Or newenemy\tarkastaja_dist<80 Then
CloneObjectPosition newenemy\tarkastaja,newenemy\obj
RotateObject newenemy\tarkastaja,WrapAngle(ObjectAngle(newenemy\obj)+90)
ObjectPick newenemy\tarkastaja
newenemy\tarkastaja_distl=Distance(ObjectX(newenemy\obj),ObjectY(newenemy\obj),PickedX(),PickedY())
RotateObject newenemy\tarkastaja,WrapAngle(ObjectAngle(newenemy\obj)-90)
ObjectPick newenemy\tarkastaja
newenemy\tarkastaja_distr=Distance(ObjectX(newenemy\obj),ObjectY(newenemy\obj),PickedX(),PickedY())
If newenemy\tarkastaja_distl=>newenemy\tarkastaja_distr Then
turnobject newenemy\obj,90
newenemy\aika=0
ElseIf newenemy\tarkastaja_distl<newenemy\tarkastaja_distr Then
TurnObject newenemy\obj,-90
newenemy\aika=0
EndIf
EndIf
If ObjectsOverlap(tähtäin,newenemy\obj) And MouseDown(1) Then
määrä=määrä-1
DeleteObject newenemy\obj
Delete newenemy
EndIf
Next newenemy
End Function