Collision detection, projectile hits anything?
BlitzMax Forums/BlitzMax Beginners Area/Collision detection, projectile hits anything?
| ||
After having had a look at the shootem up totorial hich wave made i thought about extending it a little bit. My extended idea is that some enemys can shoot bigger more powerful bullets/rockets/projectiles. BUT i want the projectiles to desctructible by the player. Furthermore, i'd like to know the owner of a projectile. Now i cant figure out a way to know the owner of a projectile. I have created a clsBullet which extends the TGameObject. Its baffling me, and the collision detection.. how can i know who shot a bullet?? check out my code, which extends Wave's code. '#Region clsBullet Type clsBullet Extends clsGameObject Field MovementSpeedX:Int; Field MovementSpeedY:Int; Field Layer:Int; Field Image:TImage; Field DeltaDelay:Int; Field IncrementsPosX:Int; '// beweeg die kogel met nnn-aantal pixels per frame. Field IncrementsPosY:Int; Field DefaulStartPosX:Int; '// bij instantieer nieuwe object; dit is startX positie. Field DefaulStartPosY:Int; '// bij instantieer nieuwe object; dit is startY positie. Field IsDestructable:Int '//Sometimes, a enemy shoots a projectile which could be destroyable by the player' projectile, default is invincible enemy projectiles. Function Create:clsBullet() Local objBullet1:clsBullet = New clsBullet; objBullet1.MovementSpeedX = 3; objBullet1.MovementSpeedY = 3; objBullet1.ObjectID = MilliSecs(); objBullet1.Layer = 0; objBullet1.DeltaDelay = 40; '// 40 millisecs objBullet1.IncrementsPosX = 4; objBullet1.IncrementsPosY = 4; objBullet1.DefaulStartPosX = 0; objBullet1.DefaulStartPosY = 0; objBullet1.IsDestructable = False; Return objBullet1; End Function Method Update:clsBullet() If(MilliSecs() > MilliSecs() + Self.DeltaDelay) If(Image = Null) DrawOval(Self.Xpos1, Self.Ypos1, 3, 9); EndIf EndIf End Method Method MoveBullet:clsBullet() Try Self.Xpos1:+ Self.IncrementsPosX; Self.Ypos1:+ Self.IncrementsPosY; Catch ex1:String Throw ex1; EndTry End Method Function CollidedWith:clsBullet() End Function End Type '#EndRegion All of the above is to be implemented in a 99.999% portable OOP-way. |
| ||
When you create a bullet you know who created it right? so maybe put a field called Parent. Field Parent:TObject Or you can cast the Bullet object to the various kinds of Bullets to find out which one it is. Just Ideas. Regards, Eric |
| ||
Furthermore, i'd like to know the owner of a projectile. Why? Its baffling me, and the collision detection.. how can i know who shot a bullet?? What difference does it make? |
| ||
Use the 'parent' method. @Flameduck, I used it to credit a 'player' with any kills. |
| ||
Can you just have a separate set of `bullets` associated with each player so that you automatically know they are related? |