Yes, that’s basically what I do. You gave me that advice some years ago and that is what I have been doing. But you need a lot of scripting to get it right. And if you mix in loads of animations it can get really complicated.
Here is a script of mine just for Idle and turning as an example:
Blockquote
def steering(self, stance):
speed = abs(self.physicsObject.linearVelocity.y)
speedFactor = min(speed / 5, 1.0)
if abs(self.movementDirection[0]) > .1:
turnFactor = self.movementDirection[0] * 60 * speedFactor
self.turnFrame = Database.lerp(self.turnFrame, turnFactor, .05)
else:
self.turnFrame = Database.lerp(self.turnFrame, 0, .05)
if self.driftButton:
self.driftTurnFrame = Database.lerp(self.driftTurnFrame, self.turnFrame, .05)
self.steerToDrift = Database.lerp(self.steerToDrift, 0.0, .05)
else:
self.driftTurnFrame = Database.lerp(self.driftTurnFrame, 0.0, .05)
self.steerToDrift = Database.lerp(self.steerToDrift, 1.0, .05)
if speed < 1:#self.turnFrame > .5 or self.turnFrame < -.5:
self.steerToDrift = Database.lerp(self.steerToDrift, 1.0, .5)
if abs(self.turnFrame) > 1:
self.setAnim("A_turn_"+self.stanceSuffix, self.turnFrame,self.turnFrame,2, 0,0,0,0)
if self.steerToDrift < .95:
if not Range.logic.globalDict["isDoingManual"]:
self.setAnim("A_drift_"+self.stanceSuffix, self.driftTurnFrame, self.driftTurnFrame,3, 0,0,0,self.steerToDrift)
self.resetIdle()
else:
self.object.stopAction(3)
self.object.stopAction(2)
if stance:
self.setAnim("A_idle_regular", 0, 400, 1, 0, 5, 0, 0)
else:
self.setAnim("A_idle_switch", 0, 400, 0, 1, 5, 0, 0)
That’s why I was hoping for an easier solution.