Lumberyard
Referencia heredada

Force Volume (Volumen de fuerza)

Puede utilizar el componente Force Volume para aplicar fuerza física a los objetos que se encuentran en el interior de un volumen. Se aplicará una fuerza en cada fotograma a los objetos que estén dentro de los límites del volumen. Por ejemplo, si un objeto entra en el volumen de una esfera, el componente Force Volume aplica fuerza a ese objeto.

nota

El componente Force Volume (Volumen de fuerza) requiere el componente Trigger y cualquiera de los componentes Shape (Forma).

ejemplo

El siguiente componente Force Volume utiliza un componente Box Shape para definir su volumen.


                Imagen de ejemplo del componente Force Volume.

Propiedades de Force Volume (Volumen de fuerza)


                 Componente Force Volume y sus propiedades en Lumberyard Editor.

Consulte las siguientes propiedades de Force Volume.

Nombre Descripción

Visible

El componente Force Volume siempre aparece en la ventanilla, incluso si no se ha seleccionado la entidad.

Debug Forces (Depurar fuerzas)

Si se selecciona, se dibuja una línea de depuración en el modo de juego. La línea de depuración muestra la dirección de la fuerza neta para cada entidad situada dentro del volumen.

Forces (Fuerzas)

Especifica los tipos de fuerzas que actúan en el volumen.

Es posible añadir, eliminar y especificar varios tipos de fuerzas para el mismo componente.

Puede definir un tipo de fuerza nuevo en una gema, con el fin de que la fuerza aparezca en el mismo menú desplegable para el componente Force Volume. En el siguiente ejemplo se define un tipo de fuerza nuevo.

ejemplo

#include <LmbrCentral/Physics/ForceVolumeRequestBus.h> class ExampleForce : public Force { public: AZ_CLASS_ALLOCATOR(ExampleForce , AZ::SystemAllocator, 0); AZ_RTTI(ExampleForce , "{00000000-0000-0000-0000-000000000000}", Force); static void Reflect(AZ::ReflectContext* context); AZ::Vector3 CalculateForce(const EntityParams& entity, const VolumeParams& volume) override { return AZ::Vector3(0, 10, 0); } };

Para obtener más ejemplos para configurar funciones EBus (bus de eventos) con el componente Force Volume, consulte el archivo ForceVolumeForces.h en el directorio lumberyard_version\dev\Gems\LmbrCentral\Code\Source\Physics.

ejemplo

El script siguiente utiliza la interfaz de bus de solicitudes.

function Script:OnActivate() ForceVolumeRequestBus.Event.SetForceDirection(self.entityId, Vector3(0, 0, 1)); end

Puede utilizar la interfaz de bus de eventos para comunicarse con otros componentes del juego. Para obtener más información, consulte Ebus.

Tipos de fuerzas

Puede especificar los siguientes tipos de fuerzas para el componente Force Volume.

Linear Damping Force (Fuerza de resistencia lineal)

Aplica una fuerza en la dirección contraria a una velocidad de la entidad. Por ejemplo, se puede crear una fuerza que simula un pantano o una zona con barro.

Properties

Nombre Descripción
Amortiguación Cantidad de resistencia que se va a aplicar. Especifique 0 si no desea aplicar resistencia.

Interfaz de bus de solicitudes EBus

Nombre de la solicitud Descripción Parámetros Devolución Capacidad de ejecución de script
GetDamping Devuelve la cantidad de resistencia. Vacío Float
SetDamping Establece la cantidad de resistencia. Float Vacío

ejemplo

El script siguiente utiliza la interfaz de bus de solicitudes.

function Script:OnActivate() LinearDampingForceRequestBus.Event.SetDamping(self.entityId, 1.0); end

Simple Drag Force (Fuerza de arrastre sencillo)

Aplica una fuerza que simula la resistencia del aire. Cuanto más grandes sean los objetos y cuanto más rápido se desplacen, mayor será la fuerza de arrastre. Los objetos se aproximan como si fueran esferas.

Propiedades

Nombre Descripción
Volume Density (Densidad de volumen)

Densidad del volumen. Especifique una densidad mayor para aumentar la fuerza de arrastre.

Interfaz de bus de solicitudes EBus

Nombre de la solicitud Descripción Parámetros Devolución Capacidad de ejecución de script
GetDensity Devuelve la densidad del volumen. Vacío Float
SetDensity Establece la densidad del volumen. Float Vacío

ejemplo

El script siguiente utiliza la interfaz de bus de solicitudes.

function Script:OnActivate() SimpleDragForceRequestBus.Event.SetDensity(self.entityId, 0.1); end

Local Space Force (Fuerza de espacio local)

Aplica una fuerza en el espacio local, relativa a la orientación del volumen. Por ejemplo, es posible crear una fuerza que simula un secador de cabello o una aspiradora.

Properties

Nombre Descripción
Dirección Dirección de la fuerza en el espacio local del volumen.
Magnitud Tamaño de la fuerza.

Interfaz de bus de solicitudes EBus

Nombre de la solicitud Descripción Parámetros Devolución Capacidad de ejecución de script
GetDirection Devuelve la dirección de la fuerza en el espacio local. Vacío Vector3
GetMagnitude Devuelve la magnitud de la fuerza. Vacío Float
SetDirection Establece la dirección de la fuerza en el espacio local. Vacío
SetMagnitude Establece la magnitud de la fuerza. Float Vacío

ejemplo

El script siguiente utiliza la interfaz de bus de solicitudes.

function Script:OnActivate() LocalSpaceForceRequestBus.Event.SetMagnitude(self.entityId, 10.0); end

Spline Follow Force (Fuerza de seguimiento al spline)

Aplica una fuerza que obliga a las entidades a seguir a un spline. La fuerza utiliza un controlador proporcional derivativo (PD), que simula un muelle que se desplaza a lo largo de un spline. Por ejemplo, se puede crear una fuerza que simula un tobogán acuático.

Propiedades

Nombre Descripción
Damping Ratio (Relación de resistencia) Cantidad de resistencia del controlador. Un valor de 1 reduce extremadamente la fuerza aplicada.
Frequency (Frecuencia) Frecuencia del controlador.
Target Speed (Velocidad objetivo) Velocidad objetivo aproximada para seguir el spline.
Lookahead (Anticipación)

Multiplicador combinado con la velocidad de la entidad para extrapolar la posición en la que se muestrea el spline. Esta propiedad es útil cuando la propiedad Target Speed (Velocidad objetivo) se establece en un valor alto.

Interfaz de bus de solicitudes EBus

Nombre de la solicitud Descripción Parámetros Devolución Capacidad de ejecución de script
GetDamping Devuelve la resistencia del controlador. Vacío Float
GetFrequency Devuelve la frecuencia del controlador. Vacío Float
GetLookAhead Devuelve la cantidad de anticipación. Vacío Float
GetTargetSpeed Devuelve la velocidad objetivo. Vacío Float
SetDamping Establece la resistencia del controlador. Float Vacío
SetFrequency Establece la frecuencia del controlador. Float Vacío
SetLookAhead Establece la cantidad de anticipación. Float Vacío
SetTargetSpeed Establece la velocidad objetivo. Float Vacío

ejemplo

El script siguiente utiliza la interfaz de bus de solicitudes.

function Script:OnActivate() SplineFollowForce.Event.SetDamping(self.entityId, 1.0); end

World Space Force (Fuerza en el espacio mundial)

Aplica una fuerza en el espacio mundial. Las fuerzas en el espacio mundial no tienen en cuenta la orientación de un objeto. Por ejemplo, se puede crear una fuerza que simula la gravedad.

Properties

Nombre Descripción
Dirección Dirección de la fuerza en el espacio mundial.
Magnitud Tamaño de la fuerza.

Interfaz de bus de solicitudes EBus

Nombre de la solicitud Descripción Parámetros Devolución Capacidad de ejecución de script
GetDirection Devuelve la dirección de la fuerza en el espacio mundial. Vacío Vector3
GetMagnitude Devuelve la magnitud de la fuerza. Vacío Float
SetDirection Establece la dirección de la fuerza en el espacio mundial. Vector3 Vacío
SetMagnitude Establece la magnitud de la fuerza. Float Vacío

ejemplo

El script siguiente utiliza la interfaz de bus de solicitudes.

function Script:OnActivate() WorldSpaceForceRequestBus.Event.SetMagnitude(self.entityId, 10.0); end

Point Force (Fuerza en un punto)

Aplica una fuerza relativa al centro del volumen. El tamaño de la magnitud determina si la fuerza es hacia el interior o hacia el exterior. Por ejemplo, se puede crear una fuerza que simula una explosión o un agujero negro.

Properties

Nombre Descripción
Magnitud

Tamaño de la fuerza.

Especifique un valor positivo para una fuerza hacia el exterior.

Especifique un valor negativo para una fuerza hacia el interior.

Interfaz de bus de solicitudes EBus

Nombre de la solicitud Descripción Parámetros Devolución Capacidad de ejecución de script
GetMagnitude

Devuelve la magnitud de la fuerza.

Vacío Float
SetMagnitude

Establece la magnitud de la fuerza.

Float Vacío

ejemplo

El script siguiente utiliza la interfaz de bus de solicitudes.

function Script:OnActivate() PointForceRequestBus.Event.SetMagnitude(self.entityId, 1.0); end