Classes | Functions

Package iphy2d
[Client Modules]

客户端--2D物理引擎。thanks to www.box2d.org More...

Classes

class  body
 iphy2d模块——2D碰撞物体基类 More...
class  distance_joint
 iphy2d模块——距离关节类 More...
class  revolute_joint
 iphy2d模块——旋转关节类 More...
class  prismatic_joint
 iphy2d模块——移动关节类 More...
class  friction_joint
 iphy2d模块——摩擦关节类 More...

Functions

def init
def destroy
def update
def delete_body
def get_object_by_id
 通过id获取2D碰撞物体
def sweep_test
 碰撞检测函数
def sweep_test_more
 碰撞检测函数
def hit_by_ray
 射线相交检测
def hit_by_ray_more
 射线相交检测
def set_debug_draw
 debug模式,用于显示物理引擎内部的真实物体
这是使用到iworld2d,因此用之前必须保证iworld2d初始化过

debug信息会按照物理引擎内部坐标显示
因此如果整个物理世界是10*10,则所显示的物体会很小,需要调整iworld2d的镜头比例(iworld2d.camera_world_scale)

def get_gravity
 获取2D物理场景重力加速度
def set_gravity
 设置2D物理场景重力加速度
场景默认没有任何重力
def set_collided_callback
 设置碰撞后的回调函数。
如果物体a、物体b相碰了,则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!
def set_first_collided_callback
 设置第一次发生碰撞后的回调函数(传感器相关函数)。
如果物体a、物体b第一次相碰,则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!
def set_last_collided_callback
 设置最后一次碰撞的回调函数(传感器相关函数)。
如果物体a、物体b最后一次相碰(下一帧不再相碰),则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!

Detailed Description

客户端--2D物理引擎。thanks to www.box2d.org


Function Documentation

def iphy2d.init (   fps = 30 )
初始化2d物理系统实例
fps 默认值为30,初始化后不能修改
场景默认没有任何重力

物理引擎内部单位:
长度单位——米
质量单位——千克
时间单位——秒
冲量单位——千克*米/秒
注意,此物理引擎有速度限制,所以需要缩放坐标系,即用于物理运算的和显示的坐标不一样
详情可以参考《iTownSDK-程序开发手册》和rabbit demo的rabbit_obj.py

def iphy2d.destroy (  )
销毁场景
iphy2d必须先于iworld2d销毁
def iphy2d.update (  )
更新场景,用于模拟碰撞和刷新物理引擎内部的各个数值
每次update的时间间隔是1/FPS
def iphy2d.delete_body (  )
真正销毁body的接口,用于不调用iphy2d.update的情况。

如果只用iphy2d来作碰撞检测,则不需要调用update,但需要在碰撞检测前调用此函数,清理destroy过的物体。
def iphy2d.get_object_by_id (   id )

通过id获取2D碰撞物体

Parameters:
intid 2D碰撞物体的id
Return values:
body2D碰撞物体实例
def iphy2d.sweep_test (   obj,
  start,
  finish,
  filter = 0xFFFF 
)

碰撞检测函数

Parameters:
iphy2d.bodyobj 用于描述你要进行碰撞检测的对象的外形
math3d.vector2start 碰撞起点位置
math3d.vector2finish 碰撞终点位置
intfilter 类别过滤,(filter & iphy2d.body.category) != 0 才会被检测
Return values:
bool是否与物品相碰
float碰撞的移动比例(即碰撞点到起点的距离比上起点终点的距离)
math3d.vector2碰撞点
math3d.vector2碰撞的法线(目前不可用,预留返回值)
iphy2d.body第一个碰到的object
def iphy2d.sweep_test_more (   obj,
  start,
  finish,
  filter = 0xFFFF 
)

碰撞检测函数

Parameters:
iphy2d.bodyobj 用于描述你要进行碰撞检测的对象的外形
math3d.vector2start 碰撞起点位置
math3d.vector2finish 碰撞终点位置
intfilter 类别过滤,(filter & iphy2d.body.category) != 0 才会被检测
Return values:
bool是否与物品相碰
float碰撞的移动比例(即碰撞点到起点的距离比上起点终点的距离)
math3d.vector2碰撞点
math3d.vector2碰撞的法线(目前不可用,预留返回值)
tuple(iphy2d.body,)碰到的body列表
def iphy2d.hit_by_ray (   start,
  finish,
  filter = 0 
)

射线相交检测

Parameters:
math3d.vector2start 碰撞起点位置
math3d.vector2finish 碰撞终点位置
intfilter 类别过滤,(filter & iphy2d.body.category) != 0 才会被检测
Return values:
bool是否与物品相碰
math3d.vector2碰撞点
math3d.vector2碰撞的法线
iphy2d.body第一个碰到的object
def iphy2d.hit_by_ray_more (   start,
  finish,
  filter = 0 
)

射线相交检测

Parameters:
math3d.vector2start 碰撞起点位置
math3d.vector2finish 碰撞终点位置
intfilter 类别过滤,(filter & iphy2d.body.category) != 0 才会被检测
Return values:
bool是否与物品相碰
math3d.vector2碰撞点
math3d.vector2碰撞的法线
tuple(iphy2d.body,)碰到的body列表
def iphy2d.set_debug_draw (   flag )

debug模式,用于显示物理引擎内部的真实物体
这是使用到iworld2d,因此用之前必须保证iworld2d初始化过

debug信息会按照物理引擎内部坐标显示
因此如果整个物理世界是10*10,则所显示的物体会很小,需要调整iworld2d的镜头比例(iworld2d.camera_world_scale)

Parameters:
boolTrue为显示,False为隐藏
def iphy2d.get_gravity (  )

获取2D物理场景重力加速度

Return values:
math3d.vector2重力加速度
def iphy2d.set_gravity (   gravity )

设置2D物理场景重力加速度
场景默认没有任何重力

Parameters:
math3d.vector2重力加速度,类型也可以是tuple(x, y),会转成vector2
def iphy2d.set_collided_callback (   callback )

设置碰撞后的回调函数。
如果物体a、物体b相碰了,则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!

Parameters:
functioncallback 回调函数,形式为callback(body_a, body_b),body_a/b是iphy2d.body。如果为None则取消回调函数
def iphy2d.set_first_collided_callback (   callback )

设置第一次发生碰撞后的回调函数(传感器相关函数)。
如果物体a、物体b第一次相碰,则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!

Parameters:
functioncallback 回调函数,形式为callback(body_a, body_b),body_a/b是iphy2d.body。如果为None则取消回调函数
def iphy2d.set_last_collided_callback (   callback )

设置最后一次碰撞的回调函数(传感器相关函数)。
如果物体a、物体b最后一次相碰(下一帧不再相碰),则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!

Parameters:
functioncallback 回调函数,形式为callback(body_a, body_b),body_a/b是iphy2d.body。如果为None则取消回调函数
 All Classes Namespaces Functions Variables Properties