From fdf8a79fea3a90ad7566585ab4a1a68401428a5e Mon Sep 17 00:00:00 2001 From: Dave Schuyler Date: Tue, 25 Oct 2005 03:55:04 +0000 Subject: [PATCH] fix for strafe --- direct/src/controls/GravityWalker.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/direct/src/controls/GravityWalker.py b/direct/src/controls/GravityWalker.py index fad53d19aa..3971df5ab8 100755 --- a/direct/src/controls/GravityWalker.py +++ b/direct/src/controls/GravityWalker.py @@ -515,9 +515,7 @@ class GravityWalker(DirectObject.DirectObject): rotation = dt * self.rotationSpeed # Take a step in the direction of our previous heading. - self.vel=Vec3(Vec3.forward() * distance + - Vec3.right() * slideDistance) - if self.vel != Vec3.zero() or self.priorParent != Vec3.zero(): + if distance or slideDistance or self.priorParent != Vec3.zero(): # rotMat is the rotation matrix corresponding to # our previous heading. rotMat=Mat3.rotateMatNormaxis(self.avatarNodePath.getH(), Vec3.up()) @@ -526,24 +524,23 @@ class GravityWalker(DirectObject.DirectObject): else: contact = self.lifter.getContactNormal() forward = contact.cross(Vec3.right()) - forward = Vec3(rotMat.xform(forward)) - # Consider commenting out this normalize. If you do so - # then going up and down slops is a touch slower and - # steeper terrain can cut the movement in half. Without - # the normalize the movement is slowed by the cosine of - # the slope (i.e. it is multiplied by the sign as a - # side effect of the cross product above). - forward.normalize() + # Consider commenting out this normalize. If you do so + # then going up and down slops is a touch slower and + # steeper terrain can cut the movement in half. Without + # the normalize the movement is slowed by the cosine of + # the slope (i.e. it is multiplied by the sign as a + # side effect of the cross product above). + forward.normalize() self.vel=Vec3(forward * distance) if slideDistance: if self.isAirborne: right = Vec3.right() else: right = forward.cross(contact) - right = Vec3(rotMat.xform(right)) - # See note above for forward.normalize() - right.normalize() - self.vel=Vec3(self.vel + right * slideDistance) + # See note above for forward.normalize() + right.normalize() + self.vel=Vec3(self.vel + (right * slideDistance)) + self.vel=Vec3(rotMat.xform(self.vel)) step=self.vel + (self.priorParent * dt) self.avatarNodePath.setFluidPos(Point3( self.avatarNodePath.getPos()+step))