角色控制器 QML 类型

控制角色的运动。更多信息...

导入语句import QtQuick3D.Physics
Qt 6.4
继承

PhysicsBody

属性

信号

  • shapeHit(PhysicsNode *body, vector3D position, vector3D impulse, vector3D normal) (since 6.6)

方法

详细描述

CharacterController 类型用于控制角色的运动。

角色是在外部控制下移动的实体,但仍受物理障碍物的约束,并且(可选)受到重力的影响。这与 动态刚体 相比,它们要么完全由物理模拟控制(对于非运动学物体);或者无论障碍物如何,都精确地移动到放置的位置(对于运动学对象)。

要控制角色控制器的运动,将 movement 设置为所需的速度。

对于第一人称视角,通常将摄像头放置在角色控制器内部。

注意:collisionShapes 必须设置为单个 CapsuleShape。不支持其他形状。

注意:角色控制器能够缩放高度低于胶囊形状高度四分之一以下的障碍物。

另请参阅:形状和实体概述文档

属性文档

collisions : Collisions [只读]

此属性包含角色的当前碰撞状态。如果没有碰撞,则为 None;否则为 SideUpDown 的 OR 组合。

常数描述
CharacterController.None角色没有接触任何东西。如果重力非空,这意味着角色正在自由落体。
CharacterController.Side角色正在接触其侧面的某物。
CharacterController.Up角色正在触碰其上方的某物。
CharacterController.Down角色正在触碰其下方的某物。在标准重力下,这意味着角色正在地面上。

注意:方向是相对于标准重力定义的:总是沿着正y轴的Up,不管CharacterController.gravityPhysicsWorld.gravity的值如何。


enableShapeHitCallback : bool [since 6.6]

此属性启用/禁用此角色控制器的CharacterController::shapeHit回调。

默认值: false

此属性自Qt 6.6中引入。


gravity : vector3d

此属性定义应用于角色的重力加速度。对于在地面上行走的角色,通常应将其设置为PhysicsWorld.gravity。具有三维运动控制的三维漂浮角色通常会具有(0, 0, 0)的重力。默认值是(0, 0, 0)


midAirControl : bool

此属性定义当角色处于自由落体状态下时,movement属性是否有作用。这只有在gravity不是null的情况下才相关。值为true表示当movement变化时,角色将改变在空中的方向。值为false表示角色将继续沿着当前的轨迹移动,直到撞到另一个物体。默认值为true


movement : vector3d

此属性定义角色的受控运动。这是在没有重力且不与其他物理对象交互的情况下角色将移动的速度。

此属性不反映角色的实际速度。如果角色被卡在地面地形上,角色的移动速度可能低于movement定义的速度。相反,如果角色在自由落体中,它可能移动得更快。

默认值是(0, 0, 0)


信号文档

[since 6.6] shapeHit(PhysicsNode *body, vector3D position, vector3D impulse, vector3D normal)

当调用movement并且会导致与DynamicRigidBodyStaticRigidBody的碰撞,并且enableShapeHitCallback设置为true时,将发出此信号。参数bodypositionimpulsenormal包含接触点的物体、位置、冲击力和法线。

注意:相应的事件处理器是onShapeHit

此信号自Qt 6.6中引入。


方法文档

teleport(vector3d position)

立即将角色移动到position,而不检查碰撞。调用者负责避免与静态物体重叠。


© 2024 Qt公司有限公司。本文件中包含的文档贡献的版权属于其各自所有者。本文件提供的文档根据自由软件基金会发布的自由文档许可证第1.3版许可。Qt及其相关标志是Qt公司在芬兰和/或其他世界国家的商标。所有其他商标均属于其各自所有者。