Problem with my enemy
BlitzMax Forums/BlitzMax Beginners Area/Problem with my enemy
| ||
Iīm currently trying to create an enemy for my game that is going to look like a flying saucer with a big gun under it, i create it like two objects, one body end one gun and then i add them both to a list for updating and rendering. My problem is: how do i get the gun object to follow along with the body object as long as the body is alive, when i kill the body the gun is going to freak out and have its own move and shoot methods but as long as the body is not dead it should be controlled (or whatever) by the body. And of cource if i could kill the gun first to make the body more or less defenseless. I donīt even know if itīs a good idea to make this enemy in two objects, maybe you have a better idea. And what happens when i have several ones of this type active at the same time, i guess the guns have to know wich body they belong to. Thanks for any help on this. |
| ||
I don't know if there is a better way, but maybe something like this:Type TEnemy Field Gun:TGun Field Body:Tbody '... Create Functions and stuff here Method Move(X:Int) If Body And Gun Then Body.x:+X Gun.X:+x ElseIf Body And Not Gun Body.x:+X ElseIf Not Body And Gun Gun.X:+1 EndIf End Method End Type Type TGun Field Life:Int Field x:Int Field Y:Int Field Image:TImage End Type Type TBody Field Life:Int Field X:Int Field Y:Int Field Image:TImage End Type |
| ||
I would do something like this:type Tenemy field x, y method draw() ' ... and so on ... endtype type Tsaucer extends Tenemy method update() ' Move the body endmethod endtype type Tsaucer_gun extends Tenemy field body:Tenemy method update() if body then ' follow body x = body.x y = body.y else ' freak out x = x - 10 + rand(0,20) y = y - 3 + rand(0,6) endif endmethod endtype local ship:tsaucer = new tsaucer local gun:tsaucer_gun = new tsaucer_gun gun.body = ship |
| ||
Type ASprite Abstract Field xPos:Double , yPos:Double Field image:TImage , frame:Int , maxFrame:Int Method move( xSpeed:Double , ySpeed:Double ) xPos:+xSpeed yPos:+ySpeed EndMethod Method draw() DrawImage image , xPos, yPos , frame frame:+1 frame:Mod maxFrame EndMethod '..whatever other methods you think are nessecary.. EndType Type TFuselage Extends ISprite Field myGun:ISprite Method move( xSpeed:Double , ySpeed:Double ) Super.move( xSpeed:Double , ySpeed:Double ) myGun.move( xSpeed:Double , ySpeed:Double ) EndMethod '..You get the idea.. EndType Type TGun Extends ISprite '..whatever fields you need for the gun EndType Local myShip:TFuselage = New TFuselage myShip.image = LoadAnimImage("ufo.png" , 128 , 64 , 0 , 40) myShip.maxFrame = 40 myShip.yPos = Rand( 0 , 400 ) myShip.myGun = New TGun myShip.myGun.image = LoadAnimImage("gunpic.png" , 64 , 64 , 0 , 4) myShip.myGun.maxFrame = 4 myShip.myGun.yPos = myShip.yPos + 64Or something to that effect. |