客户端--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,会失败! |
客户端--2D物理引擎。thanks to www.box2d.org
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碰撞物体
int | id 2D碰撞物体的id |
body | 2D碰撞物体实例 |
def iphy2d.sweep_test | ( | obj, | |
start, | |||
finish, | |||
filter = 0xFFFF |
|||
) |
碰撞检测函数
iphy2d.body | obj 用于描述你要进行碰撞检测的对象的外形 |
math3d.vector2 | start 碰撞起点位置 |
math3d.vector2 | finish 碰撞终点位置 |
int | filter 类别过滤,(filter & iphy2d.body.category) != 0 才会被检测 |
bool | 是否与物品相碰 |
float | 碰撞的移动比例(即碰撞点到起点的距离比上起点终点的距离) |
math3d.vector2 | 碰撞点 |
math3d.vector2 | 碰撞的法线(目前不可用,预留返回值) |
iphy2d.body | 第一个碰到的object |
def iphy2d.sweep_test_more | ( | obj, | |
start, | |||
finish, | |||
filter = 0xFFFF |
|||
) |
碰撞检测函数
iphy2d.body | obj 用于描述你要进行碰撞检测的对象的外形 |
math3d.vector2 | start 碰撞起点位置 |
math3d.vector2 | finish 碰撞终点位置 |
int | filter 类别过滤,(filter & iphy2d.body.category) != 0 才会被检测 |
bool | 是否与物品相碰 |
float | 碰撞的移动比例(即碰撞点到起点的距离比上起点终点的距离) |
math3d.vector2 | 碰撞点 |
math3d.vector2 | 碰撞的法线(目前不可用,预留返回值) |
tuple(iphy2d.body,) | 碰到的body列表 |
def iphy2d.hit_by_ray | ( | start, | |
finish, | |||
filter = 0 |
|||
) |
射线相交检测
math3d.vector2 | start 碰撞起点位置 |
math3d.vector2 | finish 碰撞终点位置 |
int | filter 类别过滤,(filter & iphy2d.body.category) != 0 才会被检测 |
bool | 是否与物品相碰 |
math3d.vector2 | 碰撞点 |
math3d.vector2 | 碰撞的法线 |
iphy2d.body | 第一个碰到的object |
def iphy2d.hit_by_ray_more | ( | start, | |
finish, | |||
filter = 0 |
|||
) |
射线相交检测
math3d.vector2 | start 碰撞起点位置 |
math3d.vector2 | finish 碰撞终点位置 |
int | filter 类别过滤,(filter & iphy2d.body.category) != 0 才会被检测 |
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)
bool | True为显示,False为隐藏 |
def iphy2d.get_gravity | ( | ) |
获取2D物理场景重力加速度
math3d.vector2 | 重力加速度 |
def iphy2d.set_gravity | ( | gravity ) |
设置2D物理场景重力加速度
场景默认没有任何重力
math3d.vector2 | 重力加速度,类型也可以是tuple(x, y),会转成vector2 |
def iphy2d.set_collided_callback | ( | callback ) |
设置碰撞后的回调函数。
如果物体a、物体b相碰了,则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!
function | callback 回调函数,形式为callback(body_a, body_b),body_a/b是iphy2d.body。如果为None则取消回调函数 |
def iphy2d.set_first_collided_callback | ( | callback ) |
设置第一次发生碰撞后的回调函数(传感器相关函数)。
如果物体a、物体b第一次相碰,则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!
function | callback 回调函数,形式为callback(body_a, body_b),body_a/b是iphy2d.body。如果为None则取消回调函数 |
def iphy2d.set_last_collided_callback | ( | callback ) |
设置最后一次碰撞的回调函数(传感器相关函数)。
如果物体a、物体b最后一次相碰(下一帧不再相碰),则回调之前设置的函数
注意如果在回调函数中尝试创建body,会失败!
function | callback 回调函数,形式为callback(body_a, body_b),body_a/b是iphy2d.body。如果为None则取消回调函数 |