Cameras and Actors.

So I wrote this script that does two things. First it loads an Actor with various animations and keys attached to running those animations. Second it gives me complete control of the camera. Base upon what buttons I push I can move the camera up down left right forward backward. I have tested the camera part in a seperate script and it worked fine. Anyway, whenever I try to move the camera the Actor sort of flashes as the camera moves but then returns to its original position.

Any Ideas why?

Sorry I have no idea.
Post the code below and maybe I can help you.

Martin

import direct.directbase.DirectStart
import math
import sys,os
from direct.actor import Actor
from pandac.PandaModules import Filename
from direct.gui.OnscreenText import OnscreenText
from direct.showbase import DirectObject


pathname = os.path.abspath(sys.path[0])
pathname = Filename.fromOsSpecific(pathname).getFullpath()

class Pilot(DirectObject.DirectObject):
	
	def __init__(self):
		print "Load Actor"
		self.loadActor()
		
		print "Load Events"
		self.accept('i', self.idelEvent)
		self.accept('h', self.chargeEvent)
		self.accept('p', self.painEvent)
		self.accept('f', self.fireEvent)	
		
	
	def loadActor(self):
		self.pilot = Actor.Actor(pathname + "/AirBladePilot/pilot-model", {"idle": pathname + "/AirBladePilot/pilot-idle", "charge": pathname + "/AirBladePilot/pilot-charge"})
		self.pilot.loadAnims({"pain": pathname + "/AirBladePilot/pilot-pain"})
		self.pilot.loadAnims({"fire": pathname + "/AirBladePilot/pilot-fire"})
		self.pilot.reparentTo(render)
	
	def idelEvent(self):
		self.pilot.stop()
		self.pilot.loop("idle")
	
	def chargeEvent(self):
		self.pilot.stop()
		self.pilot.loop("charge")
	
	def painEvent(self):
		self.pilot.stop()
		self.pilot.loop("pain")
	
	def fireEvent(self):
		self.pilot.stop()
		self.pilot.loop("fire")
		
class Camera(DirectObject.DirectObject)
	def __init__(self):
		self.x = 0
		self.y = 0
		self.z = 0
				
		self.h = 0
		self.p = 0
		self.r = 0
		base.camera.setPos(self.x, self.y, self.z)
		base.camera.setHpr(self.h, self.p, self.r)
				
		self.cam = 1
		self.accept('c', self.changeCam)
		self.accept('1', self.moveOnePlus)
		self.accept('4', self.moveOneMinus)
		self.accept('2', self.moveTwoPlus)
		self.accept('5', self.moveTwoMinus)
		self.accept('3', self.moveThreePlus)
		self.accept('6', self.moveThreeMinus)
					
	def moveOneMinus(self):
		if self.cam == 1:
			self.x = self.x - 1
			base.camera.setPos(self.x, self.y, self.z)
		else:
			self.h = self.h - 1
			base.camera.setHpr(self.h, self.p, self.r)
				
	def moveOnePlus(self):
		if self.cam == 1:
		self.x = self.x + 1
		base.camera.setPos(self.x, self.y, self.z)
		else:
		self.h = self.h + 1
		base.camera.setHpr(self.h, self.p, self.r)
				
	def moveTwoMinus(self):
		if self.cam == 1:
			self.y = self.y - 1
			base.camera.setPos(self.x, self.y, self.z)
		else:
			self.p = self.p - 1
			base.camera.setHpr(self.h, self.p, self.r)
				
	def moveTwoPlus(self):
		if self.cam == 1:
			self.y = self.y + 1
			base.camera.setPos(self.x, self.y, self.z)
		else:
			self.p = self.p + 1
			base.camera.setHpr(self.h, self.p, self.r)
			
	def moveThreePlus(self):
		if self.cam == 1:
			self.z = self.z + 1
			base.camera.setPos(self.x, self.y, self.z)
		else:
			self.r = self.r + 1
			base.camera.setHpr(self.h, self.p, self.r)
						
	def moveThreeMinus(self):
		if self.cam == 1:
			self.z = self.z - 1
			base.camera.setPos(self.x, self.y, self.z)
		else:	
			self.r = self.r - 1
			base.camera.setHpr(self.h, self.p, self.r)
	def changeCam(self):
		if self.cam == 0:
			self.cam = 1
			print "Camera"
		else:
			self.cam = 0
			print "HPR"

			
k = Pilot()
c = Camera()

run()

Try base.disableMouse() before you try to reposition the camera, it might help with the controls.

Ahhh… Thanks. I did not realize that I did not have that in there