Options
All
  • Public
  • Public/Protected
  • All
Menu

Class CharacterController

物理角色控制器。

在物理世界中代表一个具有胶囊碰撞体的刚体,无需和Rigidbody一起使用。
这个刚体不会发生旋转,胶囊体永远是竖直的朝向。

类似于勾选了isKinematic的Rigidbody,这个刚体不会受到物理模拟的影响,用户对这个刚体的位移具有完全的控制力。
但是与运动学刚体不同的是,物理角色控制器可以在移动(move)的过程中被其他碰撞体阻挡,就好像一个角色在充满障碍物的地图上走路一样。
除此之外,物理角色控制器还能模拟上斜坡和上台阶的行为。

see

//TODO

Hierarchy

Index

Constructors

constructor

  • internal

    Parameters

    Returns CharacterController

Properties

Readonly entity

entity: Entity

Readonly id

id: number = ...

Readonly isDestroyed

isDestroyed: boolean = false

Readonly isDestroying

isDestroying: boolean = false

Readonly priority

priority: number = ...

物理组件在节点上的执行顺序,排在渲染节点之后、用户脚本之前。

Static Priority

Priority: { Align: number; Layout: number; Low: number; Physics: number; Render: number; Tool: number } = ...

Type declaration

  • Align: number
  • Layout: number
  • Low: number
  • Physics: number
  • Render: number
  • Tool: number

Static Optional Serialize

Serialize: (...args: any[]) => any

Type declaration

    • (...args: any[]): any
    • Parameters

      • Rest ...args: any[]

      Returns any

Accessors

active

  • get active(): boolean
  • set active(value: boolean): void
  • Returns boolean

  • Parameters

    • value: boolean

    Returns void

activeInHierarchy

  • get activeInHierarchy(): boolean
  • 在场景树中是否active

    readonly
    memberof

    Component

    Returns boolean

attachedRigidbody

  • 获取碰撞体附着的刚体组件。

    Returns Rigidbody

bounds

  • 获取碰撞体的包围盒。
    组件未经历onAwake生命周期前,会获取到undefined。

    Returns ReadonlyBounds

center

  • 碰撞体相对于LocalTransform中心点的偏移。

    default

    (0, 0, 0)

    Returns Vector3

  • 碰撞体相对于LocalTransform中心点的偏移。

    Parameters

    Returns void

collisionFlags

  • 获取在上一次move()中发生碰撞的部位。

    Returns CollisionFlags

contactOffset

  • get contactOffset(): number
  • set contactOffset(v: number): void
  • 设置碰撞体的contactOffset,必须为正数。
    一对碰撞体,如果他们之间的最近距离小于他们的contactOffset之和,那么物理系统在一次物理模拟后就会产生一次碰撞。

    Returns number

  • 设置碰撞体的contactOffset,必须为正数。
    一对碰撞体,如果他们之间的最近距离小于他们的contactOffset之和,那么物理系统在一次物理模拟后就会产生一次碰撞。

    Parameters

    • v: number

    Returns void

detectCollisions

  • get detectCollisions(): boolean
  • set detectCollisions(v: boolean): void
  • unimplemented

    Returns boolean

  • Parameters

    • v: boolean

    Returns void

height

  • get height(): number
  • set height(v: number): void
  • 胶囊碰撞体的长度(包括两侧半球的半径)。

    default

    2

    Returns number

  • 胶囊碰撞体的长度(包括两侧半球的半径)。

    Parameters

    • v: number

    Returns void

isGrounded

  • get isGrounded(): boolean
  • 在上一次move()后,碰撞体是否站在地板上。

    Returns boolean

isTrigger

  • get isTrigger(): boolean
  • set isTrigger(v: boolean): void
  • unused

    物理角色控制器无法设置isTrigger属性。

    default

    false

    Returns boolean

  • Parameters

    • v: boolean

    Returns void

material

  • unused

    物理角色控制器无法使用物理材质。

    Returns PhysicMaterial

  • Parameters

    Returns void

minMoveDistance

  • get minMoveDistance(): number
  • set minMoveDistance(v: number): void
  • move()过程中最小移动距离。

    default

    0.01

    Returns number

  • move()过程中最小移动距离。

    Parameters

    • v: number

    Returns void

onCollisionEnter

  • 获取一个可以为onCollisionEnter事件添加回调的Delegate。
    在两个非Trigger碰撞体发生碰撞的第一帧,会生成一次onCollisionEnter事件。

    collider.onCollisionEnter.add(collision => {...});
    

    另一种添加onCollisionEnter(或其他物理)事件回调的方法,可以参考Script.onCollisionEnter

    Returns PhysicsDelegate<Collision>

onCollisionExit

  • 获取一个可以为onCollisionExit事件添加回调的Delegate。
    两个非Trigger碰撞体发生碰撞后,首次分开的那一帧,会生成一次onCollisionExit事件。

    Returns PhysicsDelegate<Collision>

onCollisionStay

  • 获取一个可以为onCollisionStay事件添加回调的Delegate。
    从两个非Trigger碰撞体发生碰撞后的第二帧开始,直到两个物体分开为止,会持续生成onCollisionStay事件。

    Returns PhysicsDelegate<Collision>

onControllerColliderHit

  • 获取一个可以为onControllerColliderHit事件添加回调的Delegate。
    在物理角色控制器调用move进行移动的过程中,如果被其他碰撞体所阻挡,就会生成一次onControllerColliderHit事件。

    cct.onControllerColliderHit.add(hit => {...});
    

    另一种添加onControllerColliderHit事件回调的方法,可以参考Script.onControllerColliderHit

    Returns PhysicsDelegate<ControllerColliderHit>

onTriggerEnter

  • 获取一个可以为onTriggerEnter事件添加回调的Delegate。
    在两个Trigger(或一个Trigger,一个非Trigger)碰撞体发生相交的第一帧,会生成一次onTriggerEnter事件。

    Returns PhysicsDelegate<TriggerCollision>

onTriggerExit

  • 获取一个可以为onTriggerExit事件添加回调的Delegate。
    两个Trigger(或一个Trigger,一个非Trigger)碰撞体发生相交后,首次分开的第一帧,会生成一次onTriggerExit事件。

    Returns PhysicsDelegate<TriggerCollision>

onTriggerStay

  • 获取一个可以为onTriggerStay事件添加回调的Delegate。
    从两个Trigger(或一个Trigger,一个非Trigger)碰撞体发生相交的第二帧开始,到两个物体分开,会持续生成onTriggerStay事件。

    Returns PhysicsDelegate<TriggerCollision>

radius

  • get radius(): number
  • set radius(v: number): void
  • 碰撞体胶囊两侧半球的半径。

    default

    0.5

    Returns number

  • 碰撞体胶囊两侧半球的半径。

    Parameters

    • v: number

    Returns void

skinWidth

  • get skinWidth(): number
  • set skinWidth(v: number): void
  • 设置碰撞距离,效果同Collider.contactOffset

    limit

    skinWidth >= 0

    default

    0.1

    Returns number

  • 设置碰撞距离,效果同Collider.contactOffset

    Parameters

    • v: number

    Returns void

slopeLimit

  • get slopeLimit(): number
  • set slopeLimit(v: number): void
  • 物理角色控制器能行走的最大坡度,单位为角度。

    default

    45

    Returns number

  • 物理角色控制器能行走的最大坡度,单位为角度。

    Parameters

    • v: number

    Returns void

stepOffset

  • get stepOffset(): number
  • set stepOffset(v: number): void
  • 物理角色控制器上台阶时能跨上的最大高度。

    limit

    stepOffset >= 0

    default

    0.5

    Returns number

  • 物理角色控制器上台阶时能跨上的最大高度。

    Parameters

    • v: number

    Returns void

type

  • Returns ColliderType

  • Parameters

    Returns void

velocity

  • 物理角色控制器行走的速度。
    由上一帧move()移动的距离除以上一帧的时长计算得到。

    Returns Vector3

Methods

destroy

  • destroy(): void
  • Returns void

getTypeName

  • getTypeName(): string
  • Returns string

isDetached

  • isDetached(): boolean
  • Returns boolean

move

  • 沿直线立刻移动物理角色控制器到某地,如果终点位置会和其他碰撞体相交,则会被阻挡。

    *这个操作无需等待下一次物理模拟,会立刻生效。

    Parameters

    Returns void

reposition

  • reposition(position: Vector3): void
  • 直接将物理角色控制器传送到某地,不会被障碍物阻挡。
    类似于直接修改Rigidbody.position

    Parameters

    Returns void

resetProperties

  • resetProperties(): void

simpleMove

  • 利用给定的speed来进行移动,效果类似于move

    移动的方向从speed中取,无视其中的y分量。
    移动的过程中会受重力影响。

    Parameters

    Returns void

Generated using TypeDoc