π导航  


【首页】

Blender游戏约束运动:线性运动


【2024-04-19】 Blender学堂】


浏览图片
Blender
游戏引擎教程


6DOF指6个方向自由度,即沿三个方向的平动以及绕三个轴的转动。

建立两个立方体,分别用红色和绿色标识。

浏览图片

红色立方体命名为Cube_Red,物理属性为rigid body,即刚性物体。

绿色立方体命名为Cube_Green,物理属性为static,表示静止物。

在logic editor中建立如下逻辑关系

浏览图片

运行游戏后得到如下结果:

浏览图片

即,红色立方体将向右移动一定的位移。

游戏中使用的py程序如下:

import bge

# 得到当前场景

scene = bge.logic.getCurrentScene()

# 得到场景中的对象列表

objList = scene.objects

# obj1=名为OBCube_Green的对象(绿色)

obj1 = objList["Cube_Green"]

# obj2=名为OBCube_Red的对象(红色)

obj2 = objList["Cube_Red"]

# 使用6DOF约束

constraintType = bge.constraints.GENERIC_6DOF_CONSTRAINT

0 = No Constraint (没有约束)

1 = bge.constraints.POINTTOPOINT_CONSTRAINT(点对点约束)

2 = bge.constraints.LINEHINGE_CONSTRAINT(线铰链约束)

3 = bge.constraints.ANGULAR_CONSTRAINT(角度约束)

4 = bge.constraints.CONETWIST_CONSTRAINT(锥体扭转约束)

11 = bge.constraints.VEHICLE_CONSTRAINT(车辆约束)

12 = bge.constraints.GENERIC_6DOF_CONSTRAINT (6 自由度约束)

# 得到obj1 的物理id

obj1_ID = obj1.getPhysicsId()

# 得到obj2的物理id

obj2_ID = obj2.getPhysicsId()

# 使用obj1的中心作为轴心点

pivotPos_X = 0.0

pivotPos_Y = 0.0

pivotPos_Z = 0.0

# 创建6DOF约束

cube_6DOF = bge.constraints.createConstraint( obj1_ID, obj2_ID,

constraintType,

pivotPos_X, pivotPos_Y, pivotPos_Z)

# 设置轴点沿x移动的量

cube_6DOF.setParam(0, 0.0, 10.0)

# xyz三个方向不旋转

cube_6DOF.setParam(3, 0.0, 0.0)

cube_6DOF.setParam(4, 0.0, 0.0)

cube_6DOF.setParam(5, 0.0, 0.0)

#创建x方向的移动

cube_6DOF.setParam(6, -3.0, 100)

这里我们使用了setParam这个方法,其参数说明如下。

setParam(axis, min, max)

沿 x, y 和 z轴运动。

物体2使用物体1的轴运动。

axis: 整数类型,六个自由度的轴向

0 = x axis

1 = y axis

2 = z axis

3 = x axis rotation

4 = y axis rotation

5 = z axis rotation

min:浮点数

最小距离 (0.0 表示物体2的中心)

max:浮点数

最大距离 (0.0 表示物体2的中心)

setParam(axis, speed, acceleration)

旋转运动

物体2使用物体1的轴运动。

axis: 整数类型

6 = x axis

7 = y axis

8 = z axis

9 = x axis rotation

10 = y axis rotation

11 = z axis rotation

speed:浮点数

运动速度

acceleration:浮点数

加速度



                              

copyright©2018-2024 gotopie.com