I’ve been having a very irritating and random problem. It seems that after I link an actuator (state actuator to be exact) to a python controller it will suddenly refuse to admit that actuator’s existence! I list the actuator with “fall = c.actuators[“fall_state”]” and that’s all good but after I try to activate it “c.activate(“fall”)” the console gives me this error:
ValueError: “fall” not in this python controllers actuator list
Yet I’m looking strait at the link. The same thing happened to my “normal_state” in another script. I renamed that actuator to “normal” and it’s all good and happy but any other name and it flips out. I’m using 2.49b with the new API. Is there a weird naming rule or is this a bug?
the c.activate(actuator) method takes an actuator object as an argument, not a string, which is what you were using.
fall = c.actuators['fall_state']
c.activate(fall) #fall is an actuator object, so this works
c.activate(c.actuators['fall_state']) #this WILL also work
c.activate("fall") #now you're giving it a string... this will fail.
c.activate("fall_state") #this also won't work... you're giving it a string argument