KBEngine |
Entity类
import KBEngine
成员函数
def moveToPoint( self, destination, velocity, distance, userData, faceMovement, moveVertically ): |
def cancelController( self, controllerID ): |
回调函数
def onEnterWorld( self ): |
def onLeaveWorld( self ): |
def onEnterSpace( self ): |
def onLeaveSpace( self ): |
属性
base | 只读 MAILBOX |
cell | 只读 MAILBOX |
className | 只读 string |
clientapp | 只读 PyClientApp |
direction | Tuple of 3 floats as (roll, pitch, yaw) |
id | 只读 Integer |
position | Vector3 |
spaceID | 只读 uint32 |
isOnGround | 只读 bool |
详细描述
类Entity的实例代表着在client上的游戏对象。一个Entity可以通过MAILBOX访问在base和cell应用程序上的等价的实体。这需要 一组远程调用的函数(在实体的.def文件里指定)。
成员函数文档
def moveToPoint( self, destination, velocity, distance, userData, faceMovement, moveVertically ):
功能说明:
直线移动Entity到给定的坐标点,成功或失败会调用回调函数。
任何实体,在任意时刻只能有一个移动控制器,重复调用任何移动函数将终止之前的移动控制器。
返回一个可以用于取消这次移动的控制器ID。
例如:
Entity.cancelController( movementID )。 移动取消还可以调用Entity.cancelController( "Movement" )。当移动被取消之后通知方法将 不被调用。
回调函数如下定义:
直线移动Entity到给定的坐标点,成功或失败会调用回调函数。
任何实体,在任意时刻只能有一个移动控制器,重复调用任何移动函数将终止之前的移动控制器。
返回一个可以用于取消这次移动的控制器ID。
例如:
Entity.cancelController( movementID )。 移动取消还可以调用Entity.cancelController( "Movement" )。当移动被取消之后通知方法将 不被调用。
回调函数如下定义:
def onMove( self, controllerID, userData ): def onMoveOver( self, controllerID, userData ): def onMoveFailure( self, controllerID, userData ):
参看:
Entity.cancelController |
参数:
destination | Vector3,Entity要移动到的目标位置点 |
velocity | float,Entity的移动速度,单位m/s |
distance | float,距离目标小于该值停止移动,如果该值为0则移动到目标位置。 |
userData | object,传给通知函数的数据 |
faceMovement | bool,如果实体面向移动方向则为true。如果是其它机制则为false。 |
moveVertically | bool,设为true指移动为直线移动,设为false指贴着地面移动。 |
返回:
int,新创建的控制器ID。 |
def cancelController( self, controllerID ):
参数:
controllerID | controllerID是要取消的控制器的索引,它是一个整型。一个专用的控制器类型的字符串也可以作为它的类型。 例如,一次只有一个移动/导航控制器可以被激活,这可以用entity.cancelController( "Movement" )取消。 |
回调函数文档
def onEnterWorld( self ):
如果实体非客户端控制实体,则表明实体进入了服务端上客户端控制的实体的View范围,此时客户端可以看见这个实体了。
如果实体是客户端控制的实体则表明该实体已经在服务端创建了cell并进入了space。
如果实体是客户端控制的实体则表明该实体已经在服务端创建了cell并进入了space。
def onLeaveWorld( self ):
如果实体非客户端控制实体,则表明实体离开了服务端上客户端控制的实体的View范围,此时客户端看不见这个实体了。
如果实体是客户端控制的实体则表明该实体已经在服务端销毁了cell并离开了space。
如果实体是客户端控制的实体则表明该实体已经在服务端销毁了cell并离开了space。
def onEnterSpace( self ):
客户端控制的实体进入了一个新的space。
def onLeaveSpace( self ):
客户端控制的实体离开了当前的space。
属性文档
base
其他参考:
Entity.clientEntity Entity.allClients Entity.otherClients |
类型:
只读的,MAILBOX |
cell
类型:
只读 MAILBOX |
cellData
说明:
cellData是一个字典属性。每当base实体没有创建它的cell实体时,cell实体的属性会保存在这里。
如果cell实体被创建,这些用到的值和cellData属性将被删除。除了cell实体在实体定义文件里指定的属性外,它还包含position, direction and spaceID。
cellData是一个字典属性。每当base实体没有创建它的cell实体时,cell实体的属性会保存在这里。
如果cell实体被创建,这些用到的值和cellData属性将被删除。除了cell实体在实体定义文件里指定的属性外,它还包含position, direction and spaceID。
类型:
CELLDATADICT |
className
说明:
实体的类名。
实体的类名。
类型:
只读,string |
clientapp
说明:
当前实体所属的客户端(对象)。
当前实体所属的客户端(对象)。
类型:
只读,PyClientApp |
position
这个实体在世界空间中的坐标(x, y, z),数据由服务端同步到客户端。
类型:
Vector3 |
direction
这个属性描述的是Entity在世界空间中的朝向,数据由服务端同步到客户端。
类型:
Vector3, 其中包含(roll, pitch, yaw),以弧度表示。 |
isOnGround
如果这个属性的值为True,Entity在地面上,否则为False。
如果是客户端控制的实体该属性将会在改变时同步到服务端,其他实体则由服务端同步到客户端,客户端可以判断这个值来强制贴地避免精度带来的影响。
如果是客户端控制的实体该属性将会在改变时同步到服务端,其他实体则由服务端同步到客户端,客户端可以判断这个值来强制贴地避免精度带来的影响。
类型:
可读写, bool |