i try do like you said birukoff, but i got this error:
File "panda01.py", line 360, in <module>
objetoAvatar = Avatar()
File "panda01.py", line 91, in __init__
self.toggleCam()
File "panda01.py", line 201, in toggleCam
if self.mudar_cam:
AttributeError: Avatar instance has no attribute 'mudar_cam'
i probably did wrong, this is my Avatar class:
class Avatar(DirectObject):
def __init__(self):
self.pizzaImagem = ["texturas/Saude0.png",
"texturas/Saude1.png",
"texturas/Saude2.png",
"texturas/Saude3.png",
"texturas/Saude4.png",
"texturas/Saude5.png",
"texturas/Saude6.png"]
self.saude = 1
self.estados = {"direita":0, "esquerda":0,
"pular":False, "cair":0,
"X":0, "mudar_cam":True}
self.velocidade=9
self.pontoBase = 0
self.pontoAuge = 0
self.forcaEmpuxo=0.3
self.alturaMaxima = 3
#animacao
self.blenAnim = [1.0, 0.0, 0.0]#idle run jump
self.estaSeMovendo = False
self.estaNoAr = True
self.toggleCam()
self.carregaAtor()
self.capturaEventos()
self.criaColliders()
self.exibeGUI()
taskMgr.add(self.mover, "moverPersona")
## taskMgr.add(self.anexaCamera, "dummy")
def exibeGUI(self):
self.graficoSaude = OnscreenImage( image= self.pizzaImagem[self.saude], pos=(-1,0,-0.7), scale=(0.2) )
self.graficoSaude.setTransparency( TransparencyAttrib.MAlpha )
self.graficoNum = OnscreenText( text= str(self.saude), pos=(-1,-0.73,0), scale=(0.1), fg=(1,1,1,1) )
def atualizaGUI(self):
self.graficoSaude.setImage( self.pizzaImagem[self.saude] )
self.graficoSaude.setTransparency(TransparencyAttrib.MAlpha)
self.graficoNum.destroy()
self.graficoNum = OnscreenText( text=str(self.saude), pos=(-1,-0.73,0), scale=(0.1), fg=(1,1,1,1) )
def criaColliders(self):
#ESFERA + PUSHER
self.avatarEsferaCN = CollisionNode("avatarEsfera")
self.avatarEsferaCN.addSolid( CollisionSphere(0,0,1.5, .8) )
self.personaEsfNP = self.persona.attachNewNode(self.avatarEsferaCN)
self.personaEsfNP.show()
base.cTrav.addCollider( self.personaEsfNP, base.pusher )
base.pusher.addCollider( self.personaEsfNP, self.persona )
#RAY + FLOOR
self.raio = CollisionRay(0,0,0.5 , 0,0,-1)
self.avatarRaioCN = CollisionNode("avatarRaio")
self.avatarRaioCN.addSolid( self.raio )
self.personaRaioNP = self.persona.attachNewNode( self.avatarRaioCN )
self.personaRaioNP.show()
base.cTrav.addCollider( self.personaRaioNP, base.floor )
base.floor.addCollider( self.personaRaioNP, self.persona )
#ESFERA + Eventos
# --- PE
self.cNodeEsferaPe = CollisionNode("avatarPe")
self.cNodeEsferaPe.addSolid( CollisionSphere(.5,0,0, .1) )
self.personaPe = self.persona.attachNewNode( self.cNodeEsferaPe )
self.personaPe.show()
base.cTrav.addCollider(self.personaPe, base.collEvent2)
def carregaAtor(self):
self.persona = render.attachNewNode("persona")
self.personaActor = Actor("eggs/personagem.egg",
{"idle":"eggs/personagem-parado",
"run" :"eggs/personagem-correr",
"jump":"eggs/personagem-pular"}
)
self.personaActor.setScale(.3)
self.personaActor.loop("idle")
self.personaActor.reparentTo(self.persona)
self.personaActor.setPos(0,0,1.5)
self.personaActor.enableBlend()
self.personaActor.loop("idle")
self.personaActor.loop("run")
self.personaActor.loop("jump")
self.persona.setPos(0,30,0)
self.persona.setH(90)
def capturaEventos(self):
self.accept("arrow_right", self.alteraEstado, ["direita",1] )
self.accept("arrow_left", self.alteraEstado, ["esquerda",1] )
self.accept("arrow_up", self.alteraEstado, ["pular",True] )
## self.accept("a", self.alteraEstado, ["mudar_cam", True])
base.accept("enter", self.toggleCam)
self.accept("arrow_right-up", self.alteraEstado, ["direita",0] )
self.accept("arrow_left-up", self.alteraEstado, ["esquerda",0] )
#Colisoes
self.accept("col-celula-avatar", self.saudeAvatar)
self.accept("into-plataforma", self.tocaSolo )
self.accept("outof-plataforma", self.saiSolo )
def saudeAvatar(self, carga):
print "Saude Avatar:"
print self.saude
print "nova carga:"
print carga
self.saude = self.saude + carga
print "nova saude:"
print self.saude
self.atualizaGUI()
def alteraEstado(self, chave, valor):
if chave == "pular":
if self.estados["cair"]==1:
self.estados["pular"] = False
else:
self.estados[chave] = valor
else:
self.estados[chave] = valor
def toggleCam(self):
if self.mudar_cam:
# set the camera mode 1
base.camera.setY(20)
base.camera.setP(165)
base.camera.setR(180)
base.camera.setZ(-3)
dummy = NodePath("dummy")
dummy.reparentTo(self.persona)
base.camera.reparentTo(dummy)
dummy.setP(30)
lente = base.cam.node().getLens()
lente.setFov(40)
else:
# set camera mode 2
lens = OrthographicLens()
ratio = base.getAspectRatio()
lens.setFilmSize(100.0, 100.0/ratio)
base.camera.node().setLens(lens)
base.camera.setPos(0, -100, 0)
# update self.mudar_cam variable
self.mudar_cam = not self.mudar_cam
[/code]