'Enemy stuff
If enemylives=0 Then
newenemy.ENEMIES=New(ENEMIES)
newenemy\obj=CloneObject(std_enemy_weak)
ScreenPositionObject newenemy\obj, 0,0
SetupCollision std_player, newenemy\obj, 1,1,2
ResetObjectCollision newenemy\obj
enemylives=1
EndIf
For inewenemy.ENEMIES= Each ENEMIES
If CountCollisions(inewenemy\obj) Then
'Hits counter
h=h+1
DeleteObject inewenemy\obj
Delete inewenemy
enemylives=0
EndIf
Next inewenemy
'Bullet stuff
If MouseDown(1) And reload=0
newBullet.BULLETS= New(BULLETS)
newBullet\obj=CloneObject(std_player)
CloneObjectPosition newBullet\obj,std_player
CloneObjectOrientation newBullet\obj,std_player
MoveObject newBullet\obj,70
reload=9
EndIf
'Update all BULLETS
For iBullet.BULLETS= Each BULLETS
MoveObject iBullet\obj,30 'speed=6
If Distance2(ibullet\obj,std_player) > 1000 Then
DeleteObject ibullet\obj
Delete ibullet
EndIf
Next iBullet
'Reloading
If reload>0 Then reload=reload-1
So how would I make my enemy respond to getting hit by bullets?
when you update the bullets you must update all enemys (for each) and you could use objectoverlaps to see if bullet hits then but like panic=true and if panic=true then moveobject enemy,rand(-2,2) turnobject enemy(rand(10,100)) or something...
— dev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
' Enemy + bullets example by: cce
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
FrameLimit 40 'limit speed
player=LoadObject("Media\soldier.bmp",72) 'player object
'master object, all other enemies are cloned from this one
master_enemy=LoadObject("Media\guy.bmp",72)
ShowObject master_enemy, OFF 'hide the master objecet
bullet_obj=LoadObject("Media\bullet.bmp") ' master bullet object
ShowObject bullet_obj,OFF
AddText " Move with arrows, CTRL to shoot."
AddText ""
AddText " Add enemies with your mouse."
Repeat
'Control player object with arrows
If LeftKey() Then TurnObject player,5
If RightKey() Then TurnObject player,-5
If UpKey() Then MoveObject player,2
If DownKey() Then MoveObject player,-2
'Shooting system
If KeyDown(cbKeyRControl) And reload=0 Then
newbullet.SHOT = New(SHOT) 'create a new shot
newbullet\obj=CloneObject(bullet_obj) 'clone from master bullet
'place the bullet on the player
CloneObjectPosition newbullet\obj,player
'put it on right orientation
CloneObjectOrientation newbullet\obj,player
reload=5 'weapon reload
EndIf
'update shooting
If reload>0 Then reload=reload-1
If MouseHit(1) Then ' If mouse is clicked
newenemy.ENEMY = New(ENEMY) ' create a New enemy
newenemy\obj = CloneObject(master_enemy) ' clone it from the master object
newenemy\health = 75 'enemy health
PositionObject newenemy\obj,MouseWX(),MouseWY() 'ON the mouse world coordinates
RotateObject newenemy\obj,Rand(360) ' random direction
EndIf
'Update all the bullets
For newbullet.SHOT = Each SHOT 'Loop through all the bullets
MoveObject newbullet\obj,6
If ObjectX(newbullet\obj)<-180 Or ObjectX(newbullet\obj)>180 Or ObjectY(newbullet\obj)<-130 Or ObjectY(newbullet\obj)>130 Then
'bullet goes outside play-area --> mark it to be destroyed
kill_this_bullet = 1
EndIf
'The trick is To update te enemies inside the bullet loop
For newenemy.ENEMY = Each ENEMY 'Loop through all the bullets
If ObjectsOverlap(newenemy\obj,newbullet\obj) Then 'If objects overlap eachother
newenemy\health - 25 'reduce some health from the enemy
kill_this_bullet = 1 'mark the bullet To be removed
EndIf
' the actual AI And health check starts ON row 78
Next newenemy
If kill_this_bullet = 1 Then ' you cant just remove the bullet, it will cause MAV
DeleteObject newbullet\obj 'remove the object
Delete newbullet 'remove the whole bullet
kill_this_bullet = 0 ' back To Default value
EndIf
Next newbullet
' And now update the ai And stuff
For newenemy.ENEMY = Each ENEMY 'Loop through all the bullets
TurnObject newenemy\obj,Rnd(-3,3) 'some great AI
MoveObject newenemy\obj, Rnd(-1,2)
'If enemy leaves the boundaries
If ObjectX(newenemy\obj)<-180 Or ObjectX(newenemy\obj)>180 Or ObjectY(newenemy\obj)<-130 Or ObjectY(newenemy\obj)>130 Then
MoveObject newenemy\obj,-3 'move it back
TurnObject newenemy\obj,180 'rotate it To the opposite direction
EndIf
If newenemy\health < 0 Then kill_this_enemy = 1 'If health goes below zero -> kill
If kill_this_enemy = 1 Then 'If the enemy is marked To die, kill it now :(
DeleteObject newenemy\obj
Delete newenemy
kill_this_enemy = 0
EndIf
Next newenemy
'this before screen graphics (box)
DrawGame
'draw the game boundaries
Color cbOrange
Box 20,20,360,260,OFF
DrawScreen
Until EscapeKey()