Triggering Animation based on change in x Position
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/10/2011 at 16:25, xxxxxxxx wrote:
Hi Everyone,
I'm very new to Python on C4D, but I'm sure what I'm trying to do is possible with Python.
Basically, I have a sprite that is composed of three objects - an animation of an 8bit character walking.
I have the code working in an XPresso node so far that I'm able to switch the character's state based on User Data, but I would really like to trigger the walk cycle depending on how much the character has moved on X. Something like if last position has changed on x by five, switch to next state and so on.
I know that will have to do with Vectors and Time, but I'm a little lost as to where to start.
Thanks in Advance,
-SP
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 31/10/2011 at 03:32, xxxxxxxx wrote:
if you want user data to change depending on how much the character has moved so far, it would be possible with xpresso, too.
But its more comfortable through scripting though.states = [0, 100, 200, 300] # units on the x-axis # the indices of the values represent # the state of the userdata for this value def **getState** (x_pos) : if x_pos < states[0]: return 0 for i in xrange(len(states) - 1) : if x_pos >= states[i] and x_pos < states[i + 1]: return i + 1 if x_pos >= states[-1]: return len(states) else: pass # should never run until here !. for i in xrange(-100, 500, 120) : print ("State at x-position %s:" % i).ljust(30, "."), getState(i)
State at x-position -100:..... 0 State at x-position 20:....... 1 State at x-position 140:...... 2 State at x-position 260:...... 3 State at x-position 380:...... 4
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 31/10/2011 at 14:46, xxxxxxxx wrote:
Thanks for the reply!
That is a great solution, but what I'm looking for I think is even simpler. I basically have three frames that will loop depending on how far on X the character has moved.
What I need is some way of storing how much the character has moved on X. To do this, I need to test the change over time, and the c4d.BaseTime module is very unwieldy. It looks like I might need to store a frame number, from the documentation.
Is there a simple way to check for change in X over a certain amount of time?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 31/10/2011 at 15:31, xxxxxxxx wrote:
Is there a simple way to check for change in X over a certain amount of time?
Course,
class _container: pass data = _container() data.last_x_pos = 0 def main() : pos = op.GetAbsPos().x delta = pos - data.last_x_pos #.... data.last_x_pos = pos