How to make one character shoot bullets
Monkey Forums/Monkey Beginners/How to make one character shoot bullets
| ||
I was wondering do any of you have a simple formula that just involves one character image shooting an array of bullets? How would you go about making that? Yes, I know it's weird I made that entire game a week ago but can't seem to get this right. Thanks anyway. |
| ||
Something like this:If player shoot then create bullet add bullet to bullet list EndIf Loop on bullets list Move bullets EndLoop |
| ||
Here's what I tried to do so far, but I can't get it right. I just have 2 characters here. The robot and the bullet, but it shoots all 4 bullets at once instead of shooting them individually. Strict Import mojo Global CharacterImage:Image Global CharacterStartingPointX: Int = 200 Global CharacterStartingPointY: Int = 190 Global CharacterW: Int = 120 Global CharacterH: Int = 270 Global BulletImage:Image Global BulletAmount: Int = 4 Global bullets: Bullet[BulletAmount] Global BulletW: Float = 32.0 Global BulletH: Float = 32.0 Global Shoot: Bool = false Class MyApp Extends App Method OnCreate:Int() SetUpdateRate(60) CharacterImage = LoadImage("Robo.png", 1, Image.MidHandle) For Local r: Int = 0 Until BulletAmount Local blt: Bullet = New Bullet(CharacterStartingPointX+100+ r*BulletW, CharacterStartingPointY-80) bullets[r] = blt BulletImage =LoadImage("Bullet.png") End Return 0 End Method OnUpdate:Int() If KeyDown(KEY_A) Then Shoot = true End Return True End Method OnRender:Int() Cls DrawImage(CharacterImage, CharacterStartingPointX, CharacterStartingPointY) If Shoot Then For Local blt: Bullet = Eachin bullets If blt Then blt.Draw() End End End Return 0 End End Class Bullet Public Field BulletPosX: Float Field BulletPosY: Float Method New(x1: Float, y1: Float) BulletPosX = x1 BulletPosY = y1 End Method Draw: Void() DrawImage(BulletImage, BulletPosX, BulletPosY) BulletPosX +=1 End End Function Main:Int() New MyApp() Return True End |
| ||
Try something like this, (I've removed the images and replaced them with Rects):Strict Import mojo Global CharacterStartingPointX: Int = 200 Global CharacterStartingPointY:Int = 190 Global CharacterW: Int = 120 Global CharacterH: Int = 270 Global BulletAmount:Int = 4 Global bullets:Bullet[BulletAmount] Global BulletW: Float = 32.0 Global BulletH: Float = 32.0 Class MyApp Extends App Method OnCreate:Int() SetUpdateRate(60) For Local r:Int = 0 Until BulletAmount Local blt:Bullet = New Bullet(CharacterStartingPointX + 100, CharacterStartingPointY) blt.shoot = False bullets[r] = blt End Return True End Method OnUpdate:Int() If KeyHit(KEY_A) Then For Local blt:Bullet = EachIn bullets If Not blt.shoot Then blt.shoot = True Exit End Next End For Local blt:Bullet = EachIn bullets If blt.shoot Then blt.Update() End Next Return True End Method OnRender:Int() Cls DrawRect CharacterStartingPointX, CharacterStartingPointY, CharacterW, CharacterH For Local blt:Bullet = EachIn bullets If blt.shoot Then blt.Draw() End Return True End End Class Bullet Field BulletPosX:Float Field BulletPosY:Float Field shoot:bool Method New(x1: Float, y1: Float) BulletPosX = x1 BulletPosY = y1 End Method Update:Void() BulletPosX += 5 If BulletPosX > DeviceWidth() BulletPosX = CharacterStartingPointX + 100 shoot = False End End Method Draw:Void() DrawRect(BulletPosX, BulletPosY, 10, 10) End End Function Main:Int() New MyApp() Return True End |
| ||
I haven't looked at any of the code posted here, but this thread might have some similarities that may apply with regards to the topic: http://www.monkey-x.com/Community/posts.php?topic=7551 |
| ||
Thanks therevills and Goodlucking, those two examples was perfectly what i was looking for. |