ongelmina on kun vihu alkaa ampua ja meen vihu näky etäisyydeltä pois luoti pysähtyy siihen mihin jäi
ja taas kun se näkee ne jatkaa matkaa ja luodit lentävät liian nopeasti =(
apua!
Code: Select all
Type SHOT
Field obj 'object is saved here
End Type
Type ENEMY
Field obj 'object is saved here
Field health 'enemys health variable
End Type
Type AMMUS 'luo kokoelma, jonka nimi on AMMUS
Field obj 'yksi kenttä nimeltään 'obj'
End Type
FrameLimit 40 'limit speed
'player object
'master object, all other enemies are cloned from this one
master_enemy=LoadObject("Media\soldier.bmp",72)
ShowObject master_enemy, OFF 'hide the master objecet
bullet_obj=LoadObject("Media\bullet.bmp") ' master bullet object
ShowObject bullet_obj,OFF
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
y = LoadSound ("Media\button 1.wav")
ääniAmmu = LoadSound ("Media\gun 1.wav")
aa = LoadSound ("Media\scream1.wav")
osuma = LoadSound ("Media\pop.wav")
f = LoadSound ("Media\gun 7.wav")
player=LoadObject("Media\soldier2.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
PositionObject player,30,1150
SetupCollision player,kartta,2,4,2
elämät=100
Repeat
UpdateGame
CloneCameraPosition player
If CountCollisions(player) Then PlaySound y,20
If LeftKey() Then TurnObject player,5
If RightKey() Then TurnObject player,-5
If UpKey() Then MoveObject player,3
If DownKey() Then MoveObject player,-3
If KeyDown(cbKeyspace) And reload=0 Then
PlaySound ääniammu,35
newbullet.SHOT = New(SHOT)
newbullet\obj=CloneObject(bullet_obj)
CloneObjectPosition newbullet\obj,player
CloneObjectOrientation newbullet\obj,player
TurnObject newbullet\obj, Rnd(-7, 7)
reload= 5'weapon reload
EndIf
For newbullet.SHOT = Each SHOT
MoveObject newbullet\obj,1
If GetMap(2, ObjectX(newbullet\obj), ObjectY(newbullet\obj)) Then
PlaySound f,30
DeleteObject newbullet\obj 'poista objekti
Delete newbullet 'poista luoti kokonaan
EndIf
Next newbullet
If reload>0 Then reload=reload-1
If MouseHit(1) Then
For i = 0 To 10
newenemy.ENEMY = New(ENEMY)
newenemy\obj = CloneObject(master_enemy)
PositionObject newenemy\obj,Rand(-600, 600), Rand(-600, 300)' clone it from the master object
newenemy\health = 40
SetupCollision newenemy\obj,player,2,2,2
SetupCollision newenemy\obj,kartta,2,4,2
RotateObject newenemy\obj,Rand(360)
Next i
EndIf
For newbullet.SHOT = Each SHOT
MoveObject newbullet\obj,6
If ObjectX(newbullet\obj)<-18000 Then
kill_this_bullet = 1
EndIf
For newenemy.ENEMY = Each ENEMY
If ObjectsOverlap(newenemy\obj,newbullet\obj) Then
newenemy\health - 10
kill_this_bullet = 1
PlaySound osuma,20
EndIf
Next newenemy
If kill_this_bullet = 1 Then
DeleteObject newbullet\obj
Delete newbullet
kill_this_bullet = 0
EndIf
Next newbullet
For newenemy.ENEMY = Each ENEMY
MoveObject newenemy\obj,3
If CountCollisions(newenemy\obj) Then TurnObject newenemy\obj,Rand(10,90)
If ObjectSight(newenemy\obj,player) Then
PointObject newenemy\obj,player'liikuta vihua
'jos hahmo osuu vihun näkökenttään, käännä vihu ukkoa kohti...
If CanSee(newenemy\obj, player, 360) And reload=0 Then '...ja ammu ukkoa
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,newenemy\obj
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,newenemy\obj
reload=15'aseen lataus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reload-1
'Päivitä kaikki ammukset
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,4 'liikuta ammusta
If ObjectsOverlap (luoti\obj, player) Then 'jos luoti on päällekkäin ukon kanssa...
elämät -1
DeleteObject luoti\obj
Delete luoti
EndIf
Next luoti
EndIf
If ObjectX(newenemy\obj)<-18000 Or ObjectX(newenemy\obj)>18000 Then
MoveObject newenemy\obj,2
TurnObject newenemy\obj,180
EndIf
If newenemy\health < 0 Then kill_this_enemy = 1
If kill_this_enemy = 1 Then
DeleteObject newenemy\obj
Delete newenemy
kill_this_enemy = 0
EndIf
Next newenemy
DrawGame
Text 0,0,"Elämäsi : "+elämät
If elämät=-2 Then MakeError "huomasit varmaan mikä oli vikana"
DrawScreen
Until EscapeKey()
Function ObjectDirection(_obj1, _obj2)
a# = GetAngle2(_obj1, _obj2) - ObjectAngle(_obj1)
If a > 180 Then a = a - 360
If a < -180 Then a = a + 360
Return a
EndFunction
'Tutkitaan näkeekö ukon
Function CanSee(_obj1, _obj2, _fov)
'Ensin tarkistetaan että kakkonen on ykkösen näkökentässä
If Abs(ObjectDirection(_obj1, _obj2)) > _fov Then Return False
'Tarkistetaan ettei ole seinää välissä
Return ObjectSight(_obj1, _obj2)
EndFunction