物理引擎#
- class arcade.PymunkPhysicsEngine(gravity=(0, 0), damping: float = 1.0, maximum_incline_on_ground: float = 0.708)[源代码]#
基类:
皮蒙克物理引擎
- 参数:
gravity -- 重力指向的方向
damping -- 保持到下一个刻度的速度。值1.0表示没有速度损失,而0.9表示速度损失10%等。
maximum_incline_on_ground -- 在IS_ON_GROUND()变为FALSE之前,地面可具有的最大倾斜度默认为0.708或略大于45°
- add_collision_handler(first_type: str, second_type: str, begin_handler: Callable | None = None, pre_handler: Callable | None = None, post_handler: Callable | None = None, separate_handler: Callable | None = None)[源代码]#
添加代码以处理对象之间的冲突。
- add_sprite(sprite: Sprite, mass: float = 1, friction: float = 0.2, elasticity: float | None = None, moment_of_inertia: float | None = None, body_type: int = 0, damping: float | None = None, gravity: Vec2d | Tuple[float, float] | Vec2 | None = None, max_velocity: int | None = None, max_horizontal_velocity: int | None = None, max_vertical_velocity: int | None = None, radius: float = 0, collision_type: str | None = 'default')[源代码]#
将精灵添加到物理引擎中。
- 参数:
sprite -- 要添加的精灵。
mass -- 物体的质量。默认为1。
friction -- 物体所具有的摩擦力。默认为0.2。
elasticity -- 这个物体多么有弹性啊。0表示没有反弹。值为1.0或更高时,可能会出现不良行为。
moment_of_inertia -- 转动惯量,或改变角动量所需的力。提供无穷大会使该对象停留在其旋转中。
body_type -- 身体的类型。默认为动态,即身体可以移动、旋转等。提供静态使其固定在世界上。
damping -- 请参见类文档。
gravity -- 请参见类文档。
max_velocity -- 对象的最大速度。
max_horizontal_velocity -- X轴上的最大速度,以像素为单位。
max_vertical_velocity -- Y轴上的最大速度,以像素为单位。
radius -- 为精灵创建的形状的半径,以像素为单位。
collision_type -- 为精灵指定一个名称,在添加碰撞处理程序时使用此名称。
- add_sprite_list(sprite_list, mass: float = 1, friction: float = 0.2, elasticity: float | None = None, moment_of_inertia: float | None = None, body_type: int = 0, damping: float | None = None, collision_type: str | None = None)[源代码]#
将精灵列表中的所有精灵添加到物理引擎。
- get_physics_object(sprite: Sprite) PymunkPhysicsObject [源代码]#
获取精灵的形状/身体。
- get_sprites_from_arbiter(arbiter: Arbiter) Tuple[Sprite | None, Sprite | None] [源代码]#
在给定冲突仲裁器的情况下,返回与冲突关联的精灵。
- step(delta_time: float = 0.016666666666666666, resync_sprites: bool = True)[源代码]#
告诉物理引擎执行计算。
- 参数:
delta_time -- 向前推进模拟的时间到了。保持此值不变,不要对每个步骤使用不同的值。
resync_sprites -- 重新同步Arcade图形精灵,使其与其对应的皮蒙克精灵位于相同的位置。如果每帧运行多个步骤,请将前几步设置为FALSE,将作为更新一部分的最后一步设置为TRUE。
- DYNAMIC = 0#
- KINEMATIC = 1#
- MOMENT_INF = inf#
- STATIC = 2#
- class arcade.PymunkPhysicsObject(body: Body | None = None, shape: Shape | None = None)[源代码]#
基类:
为精灵保存金丝雀形体/形状的对象。
- class arcade.PhysicsEnginePlatformer(player_sprite: Sprite, platforms: SpriteList | Iterable[SpriteList] | None = None, gravity_constant: float = 0.5, ladders: SpriteList | Iterable[SpriteList] | None = None, walls: SpriteList | Iterable[SpriteList] | None = None)[源代码]#
基类:
用于平台的简单化物理引擎。开始使用这个引擎比使用像PyMunk这样更复杂的引擎要容易得多。
Note: 将静态精灵发送到
walls
参数并将精灵移动到platforms
参数将对性能有非常极端的好处。Note: 此引擎将自动移动任何发送到
platforms
参数之间的boundary_top
和boundary_bottom
或者是boundary_left
和boundary_right
精灵的属性。您只需设置首字母change_x
或change_y
这就去。- 参数:
player_sprite -- 动人的精灵
platforms (Optional[Union[SpriteList, Iterable[SpriteList]]]) -- 玩家无法通过的精灵。该值应仅用于移动精灵。应将静态精灵发送到
walls
参数。gravity_constant -- 每帧向下加速
ladders (Optional[Union[SpriteList, Iterable[SpriteList]]]) -- 用户可以爬上的梯子
walls (Optional[Union[SpriteList, Iterable[SpriteList]]]) -- 玩家无法通过的精灵。该值应仅用于静态精灵。应将移动的精灵发送到
platforms
参数。
- can_jump(y_distance: float = 5) bool [源代码]#
方法,该方法查看PERAYER_SPRITE下是否有发言权。如果有发言权,玩家可以跳跃,我们返回True。
- 返回:
如果我们下面有一个平台,那就是真的
- enable_multi_jump(allowed_jumps: int)[源代码]#
启用多跳。ALLOW_JUMP应包括初始跳转。(1只允许一次跳转,2允许两次跳转,依此类推)
如果您启用了多次跳跃,则每次播放器跳跃时都必须调用INCREMENT_JUMP_Counter()。否则,它们可以无限跳跃。
- 参数:
allowed_jumps --
- ladders#
阶梯列表已在物理引擎中注册。
- platforms#
移动平台列表已在物理引擎中注册。
- walls#
墙上的名单在物理引擎上注册了。
- class arcade.PhysicsEngineSimple(player_sprite: Sprite, walls: SpriteList | Iterable[SpriteList] | None = None)[源代码]#
基类:
简化的物理引擎,用于无重力的游戏,如自上而下的游戏。开始使用这个引擎比使用像PyMunk这样更复杂的引擎要容易得多。
- 参数:
player_sprite -- 动人的精灵
walls (Union[SpriteList, Iterable[SpriteList]) -- 它无法通过的精灵。这可以是一个或多个精灵列表。
- walls#