浏览代码

setting isAirborne and mayJump on enabled; clearing task

Dave Schuyler 22 年之前
父节点
当前提交
d1b921ee1a
共有 1 个文件被更改,包括 10 次插入0 次删除
  1. 10 0
      direct/src/showbase/GravityWalker.py

+ 10 - 0
direct/src/showbase/GravityWalker.py

@@ -278,6 +278,8 @@ class GravityWalker(DirectObject.DirectObject):
         self.avatarNodePath = avatarNodePath
         
         self.cTrav = collisionTraverser
+        # Changing this from zero may cause the avatar
+        # to float on the ground rather than landing properly:
         self.floorOffset = 0.0
 
         self.setupRay(floorBitmask, self.floorOffset)
@@ -379,6 +381,8 @@ class GravityWalker(DirectObject.DirectObject):
         have been disabled.
         """
         assert(self.debugPrint("oneTimeCollide()"))
+        self.isAirborne = 0
+        self.mayJump = 1
         tempCTrav = CollisionTraverser("oneTimeCollide")
         tempCTrav.addCollider(self.cWallSphereNodePath, self.pusher)
         if self.wantFloorSphere:
@@ -549,6 +553,9 @@ class GravityWalker(DirectObject.DirectObject):
         taskName = "AvatarControls-FixCliff%s"%(id(self),)
         self.fixCliffTask = taskMgr.add(self.FixCliff, taskName, 31)
 
+        self.isAirborne = 0
+        self.mayJump = 1
+
         if self.physVelocityIndicator:
             if self.indicatorTask:
                 self.indicatorTask.remove()
@@ -571,6 +578,9 @@ class GravityWalker(DirectObject.DirectObject):
         if self.indicatorTask:
             self.indicatorTask.remove()
             self.indicatorTask = None
+        if self.jumpDelayTask:
+            self.jumpDelayTask.remove()
+            self.jumpDelayTask = None
 
         if __debug__:
             self.ignore("control-f3") #*#