本文整理汇总了Python中panda3d.bullet.BulletWorld.removeCharacter方法的典型用法代码示例。如果您正苦于以下问题:Python BulletWorld.removeCharacter方法的具体用法?Python BulletWorld.removeCharacter怎么用?Python BulletWorld.removeCharacter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类panda3d.bullet.BulletWorld
的用法示例。
在下文中一共展示了BulletWorld.removeCharacter方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: FriendlyFruit
# 需要导入模块: from panda3d.bullet import BulletWorld [as 别名]
# 或者: from panda3d.bullet.BulletWorld import removeCharacter [as 别名]
class FriendlyFruit(ShowBase, Scene):
def __init__(self, server_connection, player_tag):
ShowBase.__init__(self)
self.__server_connection = server_connection
self.__player_tag = player_tag
self.__rotations = {}
# Panda pollutes the global namespace. Some of the extra globals can be referred to in nicer ways
# (for example self.render instead of render). The globalClock object, though, is only a global! We
# create a reference to it here, in a way that won't upset PyFlakes.
self.globalClock = __builtins__["globalClock"]
# Turn off the debugging system which allows the camera to be adjusted directly by the mouse.
self.disableMouse()
# Set up physics: the ground plane and the capsule which represents the player.
self.world = BulletWorld()
# The ground first:
shape = BulletPlaneShape(Vec3(0, 0, 1), 0)
node = BulletRigidBodyNode("Ground")
node.addShape(shape)
np = self.render.attachNewNode(node)
np.setPos(0, 0, 0)
self.world.attachRigidBody(node)
# Enable shader generation (for more sophisticated lighting etc.)
self.render.setShaderAuto()
# Create lights so we can see the scene.
dlight = DirectionalLight("dlight")
dlight.setColor(VBase4(2, 2, 2, 0))
dlnp = self.render.attachNewNode(dlight)
dlnp.setHpr(0, -60, 0)
self.render.setLight(dlnp)
alight = AmbientLight('alight')
alight.setColor(VBase4(0.75, 0.75, 0.75, 0))
alnp = self.render.attachNewNode(alight)
self.render.setLight(alnp)
# Create a task to update the scene regularly.
self.taskMgr.add(self.update, "UpdateTask")
# Update the scene by turning objects if necessary, and processing physics.
def update(self, task):
asyncore.loop(timeout=0.01, use_poll=True, count=1)
for node, angular_velocity in self.__rotations.iteritems():
node.setAngularMovement(angular_velocity)
dt = self.globalClock.getDt()
self.world.doPhysics(dt)
return task.cont
def server_created_object(self, tag, height, radius):
# This shape is used for collision detection, preventing the player falling through the ground for
# example.
shape = BulletCapsuleShape(radius, height - 2 * radius, ZUp)
# A character controller is a physical body which responds instantly to keyboard controls. (Bodies
# which respond to forces are difficult to control in a satisfactory way using typical video game
# controls. Players expect them to move instantly when a button is pressed, but physics dictates that
# they should take a short time to accelerate.)
node = BulletCharacterControllerNode(shape, 0.4, tag)
node_path = self.render.attachNewNode(node)
Thing.add(tag, node, node_path)
self.world.attachCharacter(node)
# Does this object represent the player who is using this client?
if tag == self.__player_tag:
# If yes, attach the camera to the object, so the player's view follows the object.
self.camera.reparentTo(node_path)
else:
# If no, create a new Actor to represent the player or NPC.
humanoid = Actor("player.bam")
humanoid.setH(180)
humanoid.reparentTo(node_path)
# Scale the Actor so it is the same height as the bounding volume requested by the server.
point1 = Point3()
point2 = Point3()
humanoid.calcTightBounds(point1, point2)
humanoid.setScale(height / (point2.z - point1.z))
# If the 3D model has the origin point at floor level, we need to move it down by half the height
# of the bounding volume. Otherwise it will hang in mid air, with its feet in the middle of the
# bounding volume.
humanoid.setZ(-height / 2)
def server_removed_object(self, tag):
thing = Thing.get_thing(tag)
self.world.removeCharacter(thing.node)
thing.node_path.removeNode()
thing.remove()
def server_moves_thing(self, tag, loc_x, loc_y, loc_z, speed_x, speed_y, speed_z, angle, angular_velocity):
thing = Thing.get_thing(tag)
thing.node_path.setPos(loc_x, loc_y, loc_z)
thing.node.setLinearMovement(Vec3(speed_x, speed_y, speed_z), True)
#.........这里部分代码省略.........