PDA

View Full Version : Custom avatars and avatar.walkto


v-clizzin
11-22-2006, 10:29 AM
The code I use in Vizard to make an avatar walk to a certain point usually looks something like this:
walk = avatar.walkto(0,0,0)
avatar.act(walk)

When I run this with the avatar as a generic Vizard avatar, it actually walks to that point. When I run this with another avatar from the Complete Characters package, the avatar merely slides to the point. I've looked at the CFG files for each but couldn't figure out if there was anything that specifies a walk animation to associate with the walkto action. Is there any way to do this for other avatars?

Thanks!

Gladsomebeast
11-27-2006, 09:41 AM
You can specify the animation to use with the walkto action with the "walkAnim" keyword

walkto = vizact.walkto(0, 0.000, -3, walkAnim=avatar.getAnimationID('walk_inplace.CAF') )

avatar.addAction(walkto)

vnellyaba
02-02-2007, 11:58 AM
I am using an avatar in an array, and this method (getAnimationID) doesnt seem to work for it. Neither does getPosition(). Is there another way?

Gladsomebeast
02-02-2007, 12:04 PM
Is the varable you are trying to call getAnimationID and getPosition a valid object? Perhaps you have not intialized the list properly? Try printing the varable before you use it. It should say something like VizAvatar instance.

Print like so:


for avatar in peopleList:
print avatar

vnellyaba
02-24-2007, 11:23 AM
thanks, for some reason
victims[nextvictim].get(viz.POSITION)
works fine.

Question:
Do you have any idea why an avatar, after completing a walkto(x,y,z) would start performing another animation?
the code is:

actor.act(actor.walkto(-1, 0, 1.5,1.8,0,6))
actor.act(actor.walkto(-1, 0, 3,1.8,0,6))
actor.act(actor.turn(-110))

after each of those walkto's and during the turn, the avatar begins to bend down(which is one of the animations it has) for some milliseconds and then continue with the next action. it does the turn simultaneously with the bending down action although i never called it .

I tried setting the state to idle, but that doesnt work...

farshizzo
02-26-2007, 10:25 AM
By default, Vizard assumes the avatars idle animation is the first animation. Vizard will use the idle animation after performing walk actions and during the turn actions. The easiest solution would be to place your idle animation at the top of the animation list in your cfg file. Alternatively, you could set the idlepose of the avatar in your script:avatar = viz.add('myavatar.cfg')
avatar.idlepose = 4 #Use animation 4 as the idle poseAlso, you can specify the animation to use for the turn action:actor.act(vizact.turn(-110,anim=5)) #Use animation 5 while turning

Gladsomebeast
02-26-2007, 03:46 PM
You can also avoid having the avatar's state set the the idle animation after each action by setting the idle animation to -1.

avatar.idlepose = -1