From b222f63f7725ca533b7d68e7aaf2d1c58744b5fc Mon Sep 17 00:00:00 2001 From: Samir Naik Date: Wed, 26 Jan 2005 23:37:02 +0000 Subject: [PATCH] fix rapid rotation bug --- direct/src/controls/BattleWalker.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/direct/src/controls/BattleWalker.py b/direct/src/controls/BattleWalker.py index b6e76df9bc..5f0994cf54 100755 --- a/direct/src/controls/BattleWalker.py +++ b/direct/src/controls/BattleWalker.py @@ -2,7 +2,7 @@ from direct.showbase.ShowBaseGlobal import * import GravityWalker -BattleStrafe = 0 +BattleStrafe = 1 def ToggleStrafe(): global BattleStrafe @@ -93,8 +93,20 @@ class BattleWalker(GravityWalker.GravityWalker): dt=self.__oldDt # Before we do anything with position or orientation, make the avatar - # face it's target + # face it's target. Only allow rMax degrees rotation per frame, so + # we don't get an unnatural spinning effect + oldH = self.avatarNodePath.getH() self.avatarNodePath.headsUp(targetNp) + newH = self.avatarNodePath.getH() + delH = newH-oldH + rMax = 10 + if delH > rMax: + self.avatarNodePath.setH(oldH+rMax) + self.rotationSpeed=self.avatarControlRotateSpeed + + elif delH < -rMax: + self.avatarNodePath.setH(oldH-rMax) + self.rotationSpeed=-self.avatarControlRotateSpeed # Check to see if we're moving at all: self.moving = self.speed or self.slideSpeed or self.rotationSpeed or (self.priorParent!=Vec3.zero()) @@ -105,8 +117,10 @@ class BattleWalker(GravityWalker.GravityWalker): # Prevent avatar from getting too close to target d = self.avatarNodePath.getPos(targetNp) - if (d[0]*d[0]+d[1]*d[1] < .1): - print "toooo close" + # TODO: make min distance adjust for current weapon + if (d[0]*d[0]+d[1]*d[1] < 6.0): + # move the avatar sideways instead of forward + slideDistance += .2 distance = 0 # Take a step in the direction of our previous heading.