mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
added advance anim
This commit is contained in:
parent
ae2edb6f8a
commit
091754663b
@ -11,10 +11,12 @@ def ToggleStrafe():
|
|||||||
class BattleWalker(GravityWalker.GravityWalker):
|
class BattleWalker(GravityWalker.GravityWalker):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
GravityWalker.GravityWalker.__init__(self)
|
GravityWalker.GravityWalker.__init__(self)
|
||||||
|
self.slideSpeed = 0
|
||||||
|
self.advanceSpeed = 0
|
||||||
|
|
||||||
def getSpeeds(self):
|
def getSpeeds(self):
|
||||||
#assert(self.debugPrint("getSpeeds()"))
|
#assert(self.debugPrint("getSpeeds()"))
|
||||||
return (self.speed, self.rotationSpeed, self.slideSpeed)
|
return (self.speed, self.rotationSpeed, self.slideSpeed, self.advanceSpeed)
|
||||||
|
|
||||||
|
|
||||||
def handleAvatarControls(self, task):
|
def handleAvatarControls(self, task):
|
||||||
@ -39,19 +41,20 @@ class BattleWalker(GravityWalker.GravityWalker):
|
|||||||
slide = 0 #hack -- was: inputState.isSet("slide")
|
slide = 0 #hack -- was: inputState.isSet("slide")
|
||||||
jump = inputState.isSet("jump")
|
jump = inputState.isSet("jump")
|
||||||
# Determine what the speeds are based on the buttons:
|
# Determine what the speeds are based on the buttons:
|
||||||
self.speed=(forward and self.avatarControlForwardSpeed or
|
self.advanceSpeed=(forward and self.avatarControlForwardSpeed or
|
||||||
reverse and -self.avatarControlReverseSpeed)
|
reverse and -self.avatarControlReverseSpeed)
|
||||||
if run and self.speed>0.0:
|
if run and self.advanceSpeed>0.0:
|
||||||
self.speed*=2.0 #*#
|
self.advanceSpeed*=2.0 #*#
|
||||||
# Should fSlide be renamed slideButton?
|
# Should fSlide be renamed slideButton?
|
||||||
self.slideSpeed=.15*(turnLeft and -self.avatarControlForwardSpeed or
|
self.slideSpeed=.15*(turnLeft and -self.avatarControlForwardSpeed or
|
||||||
turnRight and self.avatarControlForwardSpeed)
|
turnRight and self.avatarControlForwardSpeed)
|
||||||
self.rotationSpeed=0
|
self.rotationSpeed=0
|
||||||
|
self.speed=0
|
||||||
|
|
||||||
if __debug__:
|
if __debug__:
|
||||||
debugRunning = inputState.isSet("debugRunning")
|
debugRunning = inputState.isSet("debugRunning")
|
||||||
if debugRunning:
|
if debugRunning:
|
||||||
self.speed*=4.0
|
self.advanceSpeed*=4.0
|
||||||
self.slideSpeed*=4.0
|
self.slideSpeed*=4.0
|
||||||
self.rotationSpeed*=1.25
|
self.rotationSpeed*=1.25
|
||||||
|
|
||||||
@ -95,30 +98,29 @@ class BattleWalker(GravityWalker.GravityWalker):
|
|||||||
# Before we do anything with position or orientation, make the avatar
|
# Before we do anything with position or orientation, make the avatar
|
||||||
# face it's target. Only allow rMax degrees rotation per frame, so
|
# face it's target. Only allow rMax degrees rotation per frame, so
|
||||||
# we don't get an unnatural spinning effect
|
# we don't get an unnatural spinning effect
|
||||||
oldH = self.avatarNodePath.getH()
|
curH = self.avatarNodePath.getH()
|
||||||
self.avatarNodePath.headsUp(targetNp)
|
self.avatarNodePath.headsUp(targetNp)
|
||||||
newH = self.avatarNodePath.getH()
|
newH = self.avatarNodePath.getH()
|
||||||
delH = newH-oldH
|
delH = reduceAngle(newH-curH)
|
||||||
rMax = 10
|
rMax = 10
|
||||||
if delH > rMax:
|
if delH < -rMax:
|
||||||
self.avatarNodePath.setH(oldH+rMax)
|
self.avatarNodePath.setH(curH-rMax)
|
||||||
|
self.rotationSpeed=-self.avatarControlRotateSpeed
|
||||||
|
elif delH > rMax:
|
||||||
|
self.avatarNodePath.setH(curH+rMax)
|
||||||
self.rotationSpeed=self.avatarControlRotateSpeed
|
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:
|
# Check to see if we're moving at all:
|
||||||
self.moving = self.speed or self.slideSpeed or self.rotationSpeed or (self.priorParent!=Vec3.zero())
|
self.moving = self.advanceSpeed or self.slideSpeed or self.rotationSpeed or (self.priorParent!=Vec3.zero())
|
||||||
if self.moving:
|
if self.moving:
|
||||||
distance = dt * self.speed
|
distance = dt * self.advanceSpeed
|
||||||
slideDistance = dt * self.slideSpeed
|
slideDistance = dt * self.slideSpeed
|
||||||
rotation = dt * self.rotationSpeed
|
rotation = dt * self.rotationSpeed
|
||||||
|
|
||||||
# Prevent avatar from getting too close to target
|
# Prevent avatar from getting too close to target
|
||||||
d = self.avatarNodePath.getPos(targetNp)
|
d = self.avatarNodePath.getPos(targetNp)
|
||||||
# TODO: make min distance adjust for current weapon
|
# TODO: make min distance adjust for current weapon
|
||||||
if (d[0]*d[0]+d[1]*d[1] < 6.0):
|
if (d[0]*d[0]+d[1]*d[1] < 6.0 and distance > 0):
|
||||||
# move the avatar sideways instead of forward
|
# move the avatar sideways instead of forward
|
||||||
slideDistance += .2
|
slideDistance += .2
|
||||||
distance = 0
|
distance = 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user