iphy2d模块——2D碰撞物体基类 More...
Public Member Functions | |
def | __init__ |
def | destroy |
销毁. | |
def | apply_linear_impulse |
给力函数,赋予物体线速度冲量,立即改变运动状态 | |
def | apply_angular_impulse |
赋予角速度冲量,立即改变运动状态 | |
def | apply_force |
正宗给力函数,iphy2d.update()之后会清除这个力 | |
def | apply_torque |
赋予物体力矩,让物体旋转,但不会影响当前线速度。iphy2d.update()之后会清除这个力矩 单位是牛顿*米,需要准确计算好推动此物体所需的力 | |
def | get_user_data |
获取记录在此类中的用户数据. | |
def | set_user_data |
设置用户数据,建议是一个引用对象 不过此函数慎用!会引起循环引用,因此释放时必须调用destroy. | |
def | get_local_point |
计算锚点相对自身质心的局部坐标 | |
def | create_fixture |
增加一个形状 | |
def | get_fixture_length |
获取物体的形状个数,body创建时已经包含一个 | |
def | destroy_fixture |
销毁物体的某一个形状,body创建时已经包含一个 | |
Properties | |
id = property(_get_id, None) | |
运行期ID,整个2d物理系统唯一的. | |
pos = property(_get_pos, _set_pos) | |
位置坐标. | |
position = property(_get_position, _set_position) | |
位置坐标(矢量). | |
mass = property(_get_mass, None) | |
物体质量. | |
rot = property(_get_rot, _set_rot) | |
物体绕顺时针方向旋转的弧度. | |
density = property(_get_density, _set_density) | |
密度,会导致物体(包括新增的形状)的质量根据体积重新被计算. | |
friction = property(_get_friction, _set_friction) | |
摩擦系数[0, 正无穷). | |
restitution = property(_get_restitution, _set_restitution) | |
弹性系数[0,1]. | |
body_type = property(_get_body_type, _set_body_type) | |
物体类型,主要区分是否可动。默认是DYNAMIC_BODY. | |
linear_damping = property(_get_ldamping, _set_ldamping) | |
线性运动阻尼. | |
angular_damping = property(_get_adamping, _set_adamping) | |
自身转动的阻尼. | |
linear_velocity = property(_get_lvelocity, _set_lvelocity) | |
线性速度. | |
angular_velocity = property(_get_avelocity, _set_avelocity) | |
角速度. | |
category = property(_get_category, _set_category) | |
碰撞类别,需要和collide_mask一起设置. | |
collide_mask = property(_get_collide_mask, _set_collide_mask) | |
接受碰撞的类别,需要和category一起设置. | |
sensor = property(_get_sensor, _set_sensor) | |
传感器,能接收碰撞消息,但是不能做物理反应. | |
sleeping = property(_get_sleeping, _set_sleeping) | |
休眠状态,此状态会停止运动,CPU消耗也减少. | |
active = property(_get_active, _set_active) | |
是否激活碰撞和运动,如果不激活,所有碰撞等都无效. | |
allow_sleeping = property(_get_allow_sleeping, _set_allow_sleeping) | |
停止运动后,是否能进入sleeping状态,能有效减少cpu消耗,默认是True. | |
fixed_rotation = property(_get_fixed_rotation, _set_fixed_rotation) | |
是否固定旋转角度。设置为True后,物体不会发生旋转,默认是False. |
iphy2d模块——2D碰撞物体基类
def __init__ | ( | self, | |
shape_type, | |||
param, | |||
density = 0.0 |
|||
) |
参数: shape_type: 物体类型 param: shape_type == SPHERE, float 球半径 shape_type == POLYGON, tuple of math3d.vector2,多边形顶点位置,顶点最多只能8个,围成的凸多边形,而且顶点需要以顺时针的方向指定 shape_type == POLYGON, 只输入math3d.vector2,会作为矩形的一半长宽,注意是一半长宽 density, float, 密度,系统会根据物品体积,和密度,自动计算出质量
def destroy | ( | self ) |
销毁.
此函数不会即时生效,将会在下一次update时把对象真正清除
def apply_linear_impulse | ( | self, | |
impulse, | |||
point | |||
) |
给力函数,赋予物体线速度冲量,立即改变运动状态
impulse | math3d.vector2, 冲量向量 |
point | math3d.vector2 冲量作用的世界位置,如果不是object当前位置,就会产生角速度冲量 |
def apply_angular_impulse | ( | self, | |
impulse | |||
) |
赋予角速度冲量,立即改变运动状态
impulse | float 角速度冲量大小,顺时针 |
def apply_force | ( | self, | |
force, | |||
point | |||
) |
正宗给力函数,iphy2d.update()之后会清除这个力
force | 力向量 |
math3d.vector2 | 力的作用点,世界坐标系,如果不是object当前位置,就会产生角速度冲量 |
def apply_torque | ( | self, | |
torque | |||
) |
赋予物体力矩,让物体旋转,但不会影响当前线速度。iphy2d.update()之后会清除这个力矩 单位是牛顿*米,需要准确计算好推动此物体所需的力
float | 力矩大小,正数为顺时针旋转,负数为逆时针旋转。 |
def get_user_data | ( | self ) |
获取记录在此类中的用户数据.
def set_user_data | ( | self, | |
data | |||
) |
设置用户数据,建议是一个引用对象
不过此函数慎用!会引起循环引用,因此释放时必须调用destroy.
data | 任何类型都可以,推荐只是一个引用 |
def get_local_point | ( | self, | |
anchor | |||
) |
def create_fixture | ( | self, | |
shape_type, | |||
param, | |||
density, | |||
offset_x = 0 , |
|||
offset_y = 0 |
|||
) |
增加一个形状
shape_type,: | 物品类型 |
param,: | 根据物品类型不同而不同 shape_type == SPHERE, float 球半径 shape_type == POLYGON, tuple of math3d.vector2,多边形顶点位置,顶点最多只能8个,围成的凸多边形,而且顶点需要以顺时针的方向指定 shape_type == POLYGON, 只输入math3d.vector2,会作为矩形的一半长宽,注意是一半长宽 |
density,: | float, 密度,系统会根据物品体积,和密度,自动计算出质量 |
offset_x,: | float, 相对中心的x轴偏移 |
offset_y,: | float, 相对中心的y轴偏移 |
def get_fixture_length | ( | self ) |
获取物体的形状个数,body创建时已经包含一个
int | 形状个数 |
def destroy_fixture | ( | self, | |
index | |||
) |
销毁物体的某一个形状,body创建时已经包含一个
index | int 形状的序列号,从0开始 |
id = property(_get_id, None) [static] |
运行期ID,整个2d物理系统唯一的.
int,只读.
pos = property(_get_pos, _set_pos) [static] |
位置坐标.
(x, y) 读写.
position = property(_get_position, _set_position) [static] |
位置坐标(矢量).
math3d.vector2 读写.
mass = property(_get_mass, None) [static] |
物体质量.
float, 只读.
rot = property(_get_rot, _set_rot) [static] |
物体绕顺时针方向旋转的弧度.
读rot时,范围会在[-math.pi , math.pi] float, 读写.
density = property(_get_density, _set_density) [static] |
密度,会导致物体(包括新增的形状)的质量根据体积重新被计算.
float, 读写.
friction = property(_get_friction, _set_friction) [static] |
摩擦系数[0, 正无穷).
0表示没有摩擦力,1会产生强摩擦,通常只需要设置在[0,1]之间 两个物体发生碰撞时,会使用以下公式模拟相互的摩擦参数:math.sqrt(body_1.friction * body_2.friction) float, 读写.默认值为 0.0
restitution = property(_get_restitution, _set_restitution) [static] |
弹性系数[0,1].
0表示非弹性碰撞,1表示完全弹性碰撞. 两个物体发生碰撞时,是用以下公式模拟相互的弹性:max(body_1.restitution, body_2.restitution). float, 读写.默认为 0.5
body_type = property(_get_body_type, _set_body_type) [static] |
物体类型,主要区分是否可动。默认是DYNAMIC_BODY.
STATIC_BODY, 就是不动的,仅仅做阻挡的物体.
DYNAMIC_BODY, 有质量,受到各种力影响,真实物理性质的物体.
KINEMATIC_BODY, 没有质量,被撞了会动的物体,例如钟摆.
读写, 接受以下类型: STATIC_BODY, DYNAMIC_BODY, KINEMATIC_BODY
linear_damping = property(_get_ldamping, _set_ldamping) [static] |
线性运动阻尼.
float,读写.
angular_damping = property(_get_adamping, _set_adamping) [static] |
自身转动的阻尼.
float,读写.
linear_velocity = property(_get_lvelocity, _set_lvelocity) [static] |
线性速度.
math3d.vector2,读写.
angular_velocity = property(_get_avelocity, _set_avelocity) [static] |
角速度.
float,读写.
category = property(_get_category, _set_category) [static] |
碰撞类别,需要和collide_mask一起设置.
例如: A, B分别对应.
category: f1, f2 .
collide_mask: m1, m2 .
那么A,B要相碰,就要满足 f1 & m2 != 0,且 f2 & m1 != 0 .
要双方都愿意跟对方碰撞才行.
16位int, 读写, 默认值为1.
collide_mask = property(_get_collide_mask, _set_collide_mask) [static] |
接受碰撞的类别,需要和category一起设置.
详情参考category的说明.
16位int, 读写, 默认值为0xFFFF.
sensor = property(_get_sensor, _set_sensor) [static] |
传感器,能接收碰撞消息,但是不能做物理反应.
如果作为传感器,则没有set_collided_callback的回调.
只有set_first_collided_callback/set_last_collided_callback 的回调.
bool , 读写.
sleeping = property(_get_sleeping, _set_sleeping) [static] |
休眠状态,此状态会停止运动,CPU消耗也减少.
如果被另外一个醒着的物体碰到,则会被唤醒继续运动.
bool 读写.
active = property(_get_active, _set_active) [static] |
是否激活碰撞和运动,如果不激活,所有碰撞等都无效.
active和sleeping的区别在于,sleeping可以被唤醒,而active不能被其他物体唤醒.
bool 读写.
allow_sleeping = property(_get_allow_sleeping, _set_allow_sleeping) [static] |
停止运动后,是否能进入sleeping状态,能有效减少cpu消耗,默认是True.
bool 读写.
fixed_rotation = property(_get_fixed_rotation, _set_fixed_rotation) [static] |
是否固定旋转角度。设置为True后,物体不会发生旋转,默认是False.
bool 读写.