mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
getting floor enter events from ray instead of sphere
This commit is contained in:
parent
68f91e700a
commit
18f2b61c32
@ -167,21 +167,21 @@ class GravityWalker(DirectObject.DirectObject):
|
|||||||
#assert(self.debugPrint("getSpeeds()"))
|
#assert(self.debugPrint("getSpeeds()"))
|
||||||
return (self.speed, self.rotationSpeed)
|
return (self.speed, self.rotationSpeed)
|
||||||
|
|
||||||
def setupRay(self, floorBitmask, floorOffset):
|
def setupRay(self, bitmask, floorOffset):
|
||||||
# This is a ray cast from your head down to detect floor polygons
|
# This is a ray cast from your head down to detect floor polygons
|
||||||
# A toon is about 4.0 feet high, so start it there
|
# A toon is about 4.0 feet high, so start it there
|
||||||
cRay = CollisionRay(0.0, 0.0, 4.0, 0.0, 0.0, -1.0)
|
cRay = CollisionRay(0.0, 0.0, 4.0, 0.0, 0.0, -1.0)
|
||||||
cRayNode = CollisionNode('GW.cRayNode')
|
cRayNode = CollisionNode('GW.cRayNode')
|
||||||
cRayNode.addSolid(cRay)
|
cRayNode.addSolid(cRay)
|
||||||
self.cRayNodePath = self.avatarNodePath.attachNewNode(cRayNode)
|
self.cRayNodePath = self.avatarNodePath.attachNewNode(cRayNode)
|
||||||
cRayNode.setFromCollideMask(floorBitmask)
|
cRayNode.setFromCollideMask(bitmask)
|
||||||
cRayNode.setIntoCollideMask(BitMask32.allOff())
|
cRayNode.setIntoCollideMask(BitMask32.allOff())
|
||||||
|
|
||||||
# set up floor collision mechanism
|
# set up floor collision mechanism
|
||||||
self.lifter = CollisionHandlerGravity()
|
self.lifter = CollisionHandlerGravity()
|
||||||
self.lifter.setGravity(32.174 * 2.0)
|
self.lifter.setGravity(32.174 * 2.0)
|
||||||
#self.lifter.setInPattern("enterRay-%in")
|
self.lifter.addInPattern("enter%in")
|
||||||
#self.lifter.setOutPattern("exitRay-%in")
|
self.lifter.addOutPattern("exit%in")
|
||||||
self.lifter.setOffset(floorOffset)
|
self.lifter.setOffset(floorOffset)
|
||||||
|
|
||||||
# Limit our rate-of-fall with the lifter.
|
# Limit our rate-of-fall with the lifter.
|
||||||
@ -235,8 +235,8 @@ class GravityWalker(DirectObject.DirectObject):
|
|||||||
|
|
||||||
# set up collision mechanism
|
# set up collision mechanism
|
||||||
handler = CollisionHandlerEvent()
|
handler = CollisionHandlerEvent()
|
||||||
handler.setInPattern("enter%in")
|
handler.addInPattern("enter%in")
|
||||||
handler.setOutPattern("exit%in")
|
handler.addOutPattern("exit%in")
|
||||||
|
|
||||||
self.event = handler
|
self.event = handler
|
||||||
self.cEventSphereNodePath = cSphereNodePath
|
self.cEventSphereNodePath = cSphereNodePath
|
||||||
@ -281,7 +281,7 @@ class GravityWalker(DirectObject.DirectObject):
|
|||||||
|
|
||||||
self.setupRay(floorBitmask, self.floorOffset)
|
self.setupRay(floorBitmask, self.floorOffset)
|
||||||
self.setupWallSphere(wallBitmask, avatarRadius)
|
self.setupWallSphere(wallBitmask, avatarRadius)
|
||||||
self.setupEventSphere(wallBitmask|floorBitmask, avatarRadius)
|
self.setupEventSphere(wallBitmask, avatarRadius)
|
||||||
# self.setupFloorSphere(floorBitmask, avatarRadius)
|
# self.setupFloorSphere(floorBitmask, avatarRadius)
|
||||||
|
|
||||||
self.setCollisionsActive(1)
|
self.setCollisionsActive(1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user