Entrada en Amazon Lumberyard - Lumberyard Guía del usuario

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

Entrada en Amazon Lumberyard

Utilice la información de esta sección para obtener más información sobre la entrada del juego en Amazon Lumberyard.

nota

Para obtener información sobre el Entrada componente que reemplaza la acción heredada mapas, consulte Input.

La entrada es lo que diferencia las experiencias interactivas de todos los demás medios de entretenimiento. Independientemente del género, el sistema operativo o el dispositivo, todos los juegos están impulsados por algún tipo de jugador La interacción de con un dispositivo de entrada físico. Hay muchos tipos diferentes de dispositivos de entrada, cada uno de los cuales pueden producir una amplia gama de datos de entrada. Además, la forma en que estos datos se entregan a una aplicación rara vez es coherente entre dispositivos o sistemas operativos. Como una operación cruzada del sistema y el motor del juego del dispositivo, LumberyardEl objetivo de es proporcionar acceso independiente a los datos de entrada de cualquier dispositivo compatible. El objetivo es proporcionar una interfaz común con estas cualidades:

  • El sistema operativo y el dispositivo son independientes

  • Ampliable

  • Eficiente

Además, los datos de entrada deben tener estos atributos:

  • Se debe obtener suscribiéndose a eventos de dispositivo de entrada

  • Debe ser posible obtenerse a petición sondeando el estado o valor de un dispositivo de entrada

  • Puede ser una carga personalizada, pero no añade sobrecarga cuando no se utiliza

LumberyardEl sistema de entrada de satisface todos estos requisitos y sustituye al sistema de entrada obsoleto.

Entrada de marco AZ

El Lumberyard La interfaz de entrada de se denomina entrada de marco de trabajo AZ. El marco de trabajo de AZ ya proporciona interfaces abstraídas para características específicas del sistema operativo como E/S de archivos y ciclo de vida de la aplicación , por lo que la ubicación del código del marco de trabajo de AZ es un ajuste natural.

La interfaz de entrada del marco de trabajo AZ utiliza la AZCore y define el sistema EBus siguientes clases y EBuses:

  • InputDevice – Una clase base que representa una entrada física dispositivo.

  • InputDeviceId – Un nombre de dispositivo e índice de dispositivo que juntos identificar de forma única un InputDevice.

  • InputDeviceNotificationBus – Una interfaz EBus que se suscribe a de los dispositivos de entrada cuando se conectan o desconectan.

  • InputDeviceRequestBus – Una interfaz de EBus que consulta la entrada sobre sus canales de entrada asociados o estado conectado actual.

  • InputChannel – Una clase base que representa una fuente específica de los datos de entrada (por ejemplo, el botón izquierdo del ratón). Los dispositivos de entrada suelen tener varios del canal de entrada.

  • InputChannelId – Un nombre que identifica de forma exclusiva un InputChannel.

  • InputChannelNotificationBus – Una interfaz EBus que se suscribe a eventos de los canales de entrada cuando los canales están activos o cuando su estado o valor cambia.

  • InputChannelRequestBus – Una interfaz de EBus que obtiene una entrada del canal desde el ID del canal de entrada. A continuación, puede consultar el canal de entrada directamente para su estado actual o valor.

  • InputChannelEventListener – Un monitor de eventos que hereda de InputChannelNotificationBus pero proporciona características adicionales. Suscriptores puede utilizar las funciones adicionales para recibir eventos en orden de prioridad o filtrar eventos basados en el dispositivo o canal de origen. Los suscriptores también pueden consumir eventos para que los eventos no se transmiten a monitores de menor prioridad.

Procesamiento de la entrada

Para procesar la entrada, simplemente puede heredar de AzFramework::InputChannelEventListener. También puede crear un filtro para recibir eventos solo desde dispositivos o canales de entrada específicos y, a continuación, anular OnInputChannelEvent para procesar los datos de entrada.

Si desea consultar el estado de entrada actual directamente, utilice AzFramework[EMPTY]InputChannelRequestBus para obtener un canal de entrada de identificación. A continuación, consulte el canal de entrada para su estado actual o valor.

Interfaces de entrada de texto

Las siguientes interfaces están diseñadas para procesar la entrada de texto. La entrada se entrega como una cadena completa de puntos de código UTF-8. Esto elimina la necesidad de realizar un seguimiento de e interpretar unidades de código individuales o convertir desde otras codificaciones.

  • InputTextEventNotificationBus – Una interfaz EBus que se suscribe a eventos de texto desde dispositivos de entrada o canales de entrada.

  • InputTextEntryRequestBus – Una interfaz EBus que envía texto Las solicitudes de entrada de. Las solicitudes informan a los dispositivos de entrada que el usuario espera iniciar o deje de introducir texto.

  • InputTextEventListener – Un monitor de eventos que hereda de InputTextNotificationBus pero proporciona características adicionales. Suscriptores puede utilizar las características adicionales para recibir eventos en orden de prioridad o consumir eventos para que los eventos no se transmitan a monitores de menor prioridad.

Entrada auxiliar Interfaces

Las siguientes interfaces auxiliares de entrada del marco de trabajo AZ solo las implementan determinadas los dispositivos de entrada. Puede utilizar estas interfaces para consultar o publicar datos relacionados con el dispositivo como los efectos de vibración, los sensores de movimiento o el cursor del ratón.

  • InputHapticFeedbackBus – Una interfaz EBus que envía un háptico Las solicitudes de retroalimentación a los dispositivos de entrada conectados.

  • InputMotionSensorRequestBus – Una interfaz de EBus que envía El sensor de movimiento solicita a los dispositivos de entrada conectados.

  • InputSystemCursorRequestBus – Una interfaz de EBus que consulta o cambia el estado, la posición o el aspecto del cursor del sistema.

Dispositivos de entrada

Todas las clases de dispositivos de entrada heredan de AzFramework::InputDevice. Mientras pueden existir varias instancias de la misma clase, cada dispositivo de entrada se identifica mediante un único InputDeviceId.

Dispositivos de entrada incluidos en Lumberyard

La clase base está diseñada para que pueda heredarla para implementar nuevos tipos de los dispositivos de entrada. Sin embargo, Lumberyard ya incluye implementaciones para los siguientes dispositivos:

Tipo de dispositivo Sistemas operativos compatibles
Ratón Ventanas, macOS
Teclado Windows y macOS
Alfombrilla de juego Windows, macOS, iOS, Android, consolas
Se toca Sistema operativo iOS, Android
Movimiento Sistema operativo iOS, Android
Teclado virtual iOS, Android, consolas
Controlador de realidad virtual Óculo, OpenVR

Este conjunto básico de dispositivos de entrada se administra mediante el AzFramework::InputSystemComponent. Puede utilizar este componente para configurar el tipo y el número de dispositivos de entrada que la aplicación crea al iniciar.

Creación de dispositivos de entrada

Puede crear e implementar nuevos tipos de dispositivos de entrada heredando de AzFramework::InputDevice y crear o destruir instancias del nuevo según sea necesario. Para ver ejemplos, consulte la sección Configuración de su proyecto de para realidad virtual, que definen y crean nuevos tipos de los dispositivos de entrada que heredan de AzFramework::InputDevice. Su código es ubicado en el Lumberyard ubicaciones de directorio \dev\Gems\Oculus y \dev\Gems\OpenVR, respectivamente.

Los detalles de implementación de cada dispositivo de entrada difieren en función del tipo de dispositivo y el sistema operativo. Sin embargo, casi todos los dispositivos siguen un patrón similar. Ellos utilizan un La API específica del sistema operativo para obtener datos de entrada sin procesar para cada fotograma y, a continuación, actualizar todo el dispositivo los canales de entrada asociados según corresponda.

Cuando implemente un dispositivo de entrada, utilice solo el dispositivo TickInput función para actualizar el valor de los canales de entrada. Esto garantiza que los eventos de entrada entregado al mismo tiempo cada fotograma.

Según cómo el dispositivo de entrada obtenga la entrada sin procesar específica del sistema operativo, podría tener que utilizar una de las siguientes técnicas:

  • Sondeo de la API de entrada subyacente en cada llamada al dispositivo de entrada TickInput función. Para ver ejemplos, consulte todos los InputDeviceGamepad Implementaciones de en el directorio \dev\Code\Framework\AzFramework\AzFramework\Input\Devices\Gamepad.

  • Poner en cola o fusionar datos de entrada del bucle de mensajes principal de la aplicación hasta la siguiente llamada a TickInput. Para ver un ejemplo, consulte InputDeviceMouse en el directorio \dev\Code\Framework\AzFramework\AzFramework\Input\Devices\Mouse.

  • Asegurarse de que los canales de entrada se actualizan de forma segura para subprocesos si no se realiza ninguna entrada sin procesar recibido en el subproceso principal. Para ver un ejemplo, consulte InputDeviceTouchAndroid en el directorio \dev\Code\Framework\AzFramework\AzFramework\Input\Devices\Touch.

Canales de entrada

Los dispositivos de entrada pueden tener varios canales de entrada. Cada canal representa un fuente de datos de entrada que se identifica de forma exclusiva mediante un InputChannelId.

Usar canales de entrada AzFramework::InputChannelNotificationBus::OnInputChannelEvent para difundir eventos de. Un canal difunde eventos cuando el estado o valor del canal cambia de un fotograma al siguiente o si el canal sigue activo o se mantiene. También se puede acceder a los canales de entrada directamente y sondeado en cualquier momento para consultar su estado y valor actuales.

Creación de canales de entrada

Me gusta el AzFramework::InputDevice clase base, puede heredar de AzFramework::InputChannel para implementar nuevos tipos de datos de entrada de los orígenes de.

Canales de entrada incluidos en Lumberyard

Lumberyard proporciona las siguientes implementaciones de canal de entrada que utiliza el dispositivos enumerados en el Dispositivos de entrada sección. También puede utilizar estas implementaciones para nuevos dispositivos de entrada.

Canal de entrada Uso de ejemplo
InputChannelAnalog Gamepad trigger (Disparador de gamepad)
InputChannelAnalogWithPosition2D Toque con presión en una posición
InputChannelAxis1D Pulsador de control para gamepad x o y
InputChannelAxis2D Pulsador de control de juego x e y juntos
InputChannelAxis3D Aceleración, rotación o campo magnético del sensor de movimiento
InputChannelDelta Rueda del ratón
InputChannelDeltaWithSharedPosition2D Movimiento del ratón
InputChannelDigital Tecla del teclado o botón del mando para juegos
InputChannelDigitalWithPosition2D Toque sin presión en una posición
InputChannelDigitalWithSharedPosition2D Botón del ratón en una posición
InputChannelQuaternion Orientación del sensor de movimiento