Imagescollide
BlitzMax Forums/BlitzMax Beginners Area/Imagescollide| 
 | ||
| So I know why this fail, I just have no idea how to fix it. when it get's to images collide, technically the bullet doesn't exist yet as I haven't pressed space bar, so it tells me that it doesn't recognize b. How would I make this code work? Repeat Cls For Local l:Objects = EachIn Objectlist l.Updatestate() l.Drawstate() Next For Local life:Int = 1 To Lives DrawRect 30*life,580,25,20 Next If KeyHit(key_space) Then Local b:Bullet = New Bullet.Create("Images/Bullet.png",hero.x,hero.y-20) If ImagesCollide(b.Image,b.x,b.y,0,e.Image,e.x,e.y,0) ListRemove Objectlist,e ListRemove Objectlist,b Exit EndIf If Lives = 0 Then End Flip Until AppTerminate() Or KeyHit(key_escape) I've tried adding "If Bullet.Objectlist" to the imagescollide code, it then decides to tell me that "Objectlist" does not exist. in spite of it working everywhere else in the code. | 
| 
 | ||
| not the best way of doing it but it will work: 
'note that I loaded the image as a pixmap and stored it globally
Global pixmap:TPixmap = LoadPixmap("Images/bullet.png")
Repeat
	Cls
	
	' ************* Logic *******************
	For Local l:Objects = EachIn Objectlist 
		l.Updatestate()
	Next 
	
	
	For Local b:Bullet = EachIn objectList
		For Local e:Enemy = EachIn objectList			
			If ImagesCollide(b.Image,b.x,b.y,0,e.Image,e.x,e.y,0) 
				ListRemove objectList,e
				ListRemove objectList,b
			EndIf 
		Next
	Next
	
	If KeyHit(key_space) Then
                'this creates a bullets and stores it for future use.
                'passes the pixmap to the collision instead going trough file access every time which is really slow.
               
		Local b:Bullet = New Bullet.Create(pixmap,hero.x,hero.y-20)  ' uses LoadImage(pixmap)
		objectList.AddLast(b)
	EndIf 
	If Lives = 0 Then End 
	
	
	' graphics done separate from logic.
	For Local l:Objects = EachIn Objectlist
		l.Drawstate()
	Next 
	For Local life:Int = 1 To Lives
		DrawRect 30*life,580,25,20
	Next 
	
	
	Flip
Until AppTerminate() Or KeyHit(key_escape)
I would keep the bullets in a separate list so there can be different type of enemies in the enemy list while allowing collision of bullet with enemies. |