Hi everyone,
I’m having a architecture problem… Any help will be appreciated. It’s a space shooter game, when the player press on “fire”, a lazer objet is created. My problem is that the name in my class is static, so when the player press “fire” a couple of time, the node are re-created and the previous one stop moving.
Here is the code for the lazer class:
class WeaponDarkLazer:
def __init__(self, world, basePos, baseH):
self.world = world
self.pos = basePos
self.baseH = baseH
self.hitDammage = 1
self.speed = 30
self.autodestruction = 3
self.totalElapsed = 0
self.loadModels()
def loadModels(self):
self.orbit_root_lazer = self.world.attachNode()
self.orbit_root_lazer.setPos(0, 0, 0)
self.orbit_root_lazer.setH(self.baseH)
#Load the beams
self.leftBeam = loader.loadModel("models/darklazer/cylinder.egg")
self.leftBeam.reparentTo(self.orbit_root_lazer)
self.leftBeam.setColor(0, 1, 0, 1)
self.leftBeam.setHpr(0, 90, 0)
self.leftBeam.setScale(0.04, 0.04, 0.5)
self.leftBeam.setPos(self.pos)
self.leftBeam.setX(self.leftBeam.getX() - 0.5)
self.leftBeam.show()
self.rightBeam = loader.loadModel("models/darklazer/cylinder.egg")
self.rightBeam.reparentTo(self.orbit_root_lazer)
self.rightBeam.setColor(0, 1, 0, 1)
self.rightBeam.setHpr(0, 90, 0)
self.rightBeam.setScale(0.04, 0.04, 0.5)
self.rightBeam.setPos(self.pos)
self.rightBeam.setX(self.rightBeam.getX() + 0.5)
self.rightBeam.show()
def move(self, elapsed):
self.totalElapsed += elapsed
if (self.totalElapsed < self.autodestruction):
self.orbit_root_lazer.setH(self.orbit_root_lazer.getH() + (elapsed * self.speed))
else:
self.orbit_root_lazer.removeNode()
I don’t know if there is a way to create a dynamic name with an id? So there will still be my orbit_root_lazer but each lazer will have it’s own node like lazer1node, lazer2node that will increment each time the player press “fire”.
So is it possible? Or do you have any other idea to create the same effet?
Thanks!
Jaff