Sur cette page

CharacterController QML Type

Permet de contrôler les mouvements d'un personnage. En savoir plus...

Import Statement: import QtQuick3D.Physics
Since: Qt 6.4
Inherits:

PhysicsBody

Propriétés

Signaux

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

Méthodes

Description détaillée

Le type CharacterController contrôle les mouvements d'un personnage.

Un personnage est une entité qui se déplace sous un contrôle externe, mais qui reste soumise à des barrières physiques et (éventuellement) à la gravité. Cela contraste avec les objets de type « dynamic rigid bodies », qui sont soit entièrement contrôlés par la simulation physique (pour les corps non cinématiques), soit se déplacent exactement là où ils sont placés, sans tenir compte des barrières (pour les objets cinématiques).

Pour contrôler le mouvement d’un contrôleur de personnage, définissez l’ movement à la vitesse souhaitée.

Pour une vue à la première personne, la caméra est généralement placée à l’intérieur d’un contrôleur de personnage.

Remarque : l’ collisionShapes doit être défini sur une seule forme « CapsuleShape ». Aucune autre forme n’est prise en charge.

Remarque : le contrôleur de personnage est capable de franchir des obstacles dont la hauteur est inférieure au quart de celle de la forme de la capsule.

Voir également «Qt Quick 3D Physics Shapes, Bodies and Joints ».

Documentation sur les propriétés

collisions : Collisions [read-only]

Cette propriété contient l'état actuel de collision du personnage. Elle peut prendre la valeur « None » (aucune collision) ou une combinaison (ou) des valeurs suivantes : « Side », « Up » et « Down » :

ConstanteDescription
CharacterController.NoneLe personnage ne touche rien. Si la gravité est non nulle, cela signifie que le personnage est en chute libre.
CharacterController.SideLe personnage touche quelque chose sur le côté.
CharacterController.UpLe personnage touche quelque chose au-dessus de lui.
CharacterController.DownLe personnage touche quelque chose situé en dessous de lui. En gravité standard, cela signifie que le personnage est au sol.

Remarque : les directions sont définies par rapport à la gravité standard : Up est toujours orientée le long de l’axe y positif, quelle que soit la valeur de CharacterController.gravity ou PhysicsWorld.gravity

enableShapeHitCallback : bool [since 6.6]

Cette propriété active ou désactive la fonction de rappel « CharacterController::shapeHit » pour ce contrôleur de personnage.

Valeur par défaut : false

Cette propriété a été introduite dans Qt 6.6.

gravity : vector3d

Cette propriété définit l'accélération gravitationnelle qui s'applique au personnage. Pour un personnage marchant au sol, elle doit généralement être définie sur PhysicsWorld.gravity. Un personnage flottant dont les mouvements sont contrôlés en trois dimensions aura normalement une gravité de (0, 0, 0).

Valeur par défaut : (0, 0, 0).

midAirControl : bool

Cette propriété détermine si la propriété « movement » s'applique lorsque le personnage est en chute libre. Elle n'est pertinente que si la propriété « gravity » n'est pas nulle. Une valeur « true » signifie que le personnage changera de direction en plein vol lorsque la propriété « movement » changera. Une valeur « false » signifie que le personnage poursuivra sa trajectoire actuelle jusqu'à ce qu'il heurte un autre objet.

Valeur par défaut : true

movement : vector3d

Cette propriété définit le mouvement contrôlé du personnage. Il s'agit de la vitesse à laquelle le personnage se déplacerait en l'absence de gravité et sans interagir avec d'autres objets physiques.

Cette propriété ne reflète pas la vitesse réelle du personnage. Si le personnage est bloqué contre le terrain, il peut se déplacer plus lentement que la vitesse définie par movement. À l'inverse, s'il est en chute libre, il peut se déplacer beaucoup plus rapidement.

Valeur par défaut : (0, 0, 0)

Documentation sur les signaux

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

Ce signal est émis lorsque la fonction movement a été appelée et qu’elle entraînerait une collision avec un DynamicRigidBody ou un StaticRigidBody, et que enableShapeHitCallback est défini sur true. Les paramètres body, position, impulse et normal contiennent le corps, la position, la force d’impulsion et la normale du point de contact.

Remarque : le gestionnaire correspondant est onShapeHit.

Ce signal a été introduit dans Qt 6.6.

Documentation de la méthode

void teleport(vector3d position)

Déplacez immédiatement le personnage vers position sans vérifier s'il y a des collisions. Il incombe à l'appelant d'éviter tout chevauchement avec des objets statiques.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.