Public Member Functions | Properties

body Class Reference

iphy2d模块——2D碰撞物体基类 More...

List of all members.

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.

Detailed Description

iphy2d模块——2D碰撞物体基类


Constructor & Destructor Documentation

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, 密度,系统会根据物品体积,和密度,自动计算出质量

Member Function Documentation

def destroy (   self )

销毁.


此函数不会即时生效,将会在下一次update时把对象真正清除

def apply_linear_impulse (   self,
  impulse,
  point 
)

给力函数,赋予物体线速度冲量,立即改变运动状态

Parameters:
impulsemath3d.vector2, 冲量向量
pointmath3d.vector2 冲量作用的世界位置,如果不是object当前位置,就会产生角速度冲量
def apply_angular_impulse (   self,
  impulse 
)

赋予角速度冲量,立即改变运动状态

Parameters:
impulsefloat 角速度冲量大小,顺时针
def apply_force (   self,
  force,
  point 
)

正宗给力函数,iphy2d.update()之后会清除这个力

Parameters:
force力向量
math3d.vector2力的作用点,世界坐标系,如果不是object当前位置,就会产生角速度冲量
def apply_torque (   self,
  torque 
)

赋予物体力矩,让物体旋转,但不会影响当前线速度。iphy2d.update()之后会清除这个力矩 单位是牛顿*米,需要准确计算好推动此物体所需的力

Parameters:
float力矩大小,正数为顺时针旋转,负数为逆时针旋转。
def get_user_data (   self )

获取记录在此类中的用户数据.

def set_user_data (   self,
  data 
)

设置用户数据,建议是一个引用对象
不过此函数慎用!会引起循环引用,因此释放时必须调用destroy.

Parameters:
data任何类型都可以,推荐只是一个引用
def get_local_point (   self,
  anchor 
)

计算锚点相对自身质心的局部坐标

Parameters:
anchormath3d.vector2 世界坐标的一个点
Return values:
math3d.vector2返回局部坐标
def create_fixture (   self,
  shape_type,
  param,
  density,
  offset_x = 0,
  offset_y = 0 
)

增加一个形状

Parameters:
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创建时已经包含一个

Return values:
int形状个数
def destroy_fixture (   self,
  index 
)

销毁物体的某一个形状,body创建时已经包含一个

Parameters:
indexint 形状的序列号,从0开始

Property Documentation

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 读写.

 All Classes Namespaces Functions Variables Properties