Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
Gamepad类 参考

游戏手柄. 更多...

#include <Gamepad.h>

Public 类型

enum class  Thumb { left , right }
 手柄摇杆.
 
enum class  Trigger { Trigger::left , Trigger::right }
 手柄线性按键. 更多...
 
enum class  Button : uint8_t {
  A = 0 , B = 1 , X = 2 , Y = 3 ,
  LeftBumper = 4 , RightBumper = 5 , Back = 6 , Start = 7 ,
  Guide = 8 , LeftThumb = 9 , RightThumb = 10 , DPAD_Up = 11 ,
  DPAD_Right = 12 , DPAD_Down = 13 , DPAD_Left = 14 , Cross = A ,
  Circle = B , Square = X , Triangle = Y
}
 手柄按键.
 
using handle_type = unsigned short
 

Public 成员函数

 Gamepad (handle_type handle=0)
 默认构造函数.
 
 ~Gamepad ()
 默认析构函数.
 
void update ()
 更新数据.
 
Vector2f get (Thumb thumb) const noexcept
 获取摇杆数据. 更多...
 
Vector2f get_raw (Thumb thumb) const noexcept
 获取原始摇杆数据. 更多...
 
float get (Trigger trigger) const noexcept
 获取线性按键力度. 更多...
 
float get_raw (Trigger trigger) const noexcept
 获取原始线性按键数据. 更多...
 
bool get (Button button) const noexcept
 获取按键状态. 更多...
 
void set_vibration (float leftSpeed, float rightSpeed)
 设置震动反馈. 更多...
 
std::string_view get_name () const
 获取设备名称. 人类可读的, UTF-8 编码.
 
bool is_connected () const
 检查手柄是否处于连接状态. 更多...
 
bool load_mappings_db (const std::filesystem::path &path)
 加载 SDL 按键映射数据库. 更多...
 
bool operator== (const Gamepad &) const
 

静态 Public 成员函数

static void init ()
 
static void deinit ()
 

详细描述

游戏手柄.

获取手柄的按键状态, 摇杆数据和设备名称.

Gamepad gamepad; // 如果使用一个手柄, 可以直接使用默认构造函数
if(!gamepad.is_connected()) // 检测手柄是否处于连接状态
return;
gamepad.update(); // 更新手柄数据, 获取按键/摇杆数据前需要先更新
// 获取手柄按键/摇杆数据的成员函数名称是 get, 但是它们的返回值是不一样的.
bool pressed = gamepad.get(Gamepad::Button::A)) // 获取按键 A 是否按下
float magnitude = gamepad.get(Gamepad::Trigger::left); // 获取左侧线性按键(LT)按力度
Vector2f position = gamepad.get(Gamepad::Thumb::left); // 获取左侧摇杆数据
游戏手柄.
Definition: Gamepad.h:19
bool is_connected() const
检查手柄是否处于连接状态.
Definition: Gamepad.cpp:124
Vector2f get(Thumb thumb) const noexcept
获取摇杆数据.
Definition: Gamepad.cpp:52
void update()
更新数据.
Definition: Gamepad.cpp:33
@ left
左侧线性按键, 即 LT.

成员函数说明

◆ get() [1/3]

bool Gamepad::get ( Button  button) const
noexcept

获取按键状态.

参数
button按键.
返回
按键是否按下.

◆ get() [2/3]

Vector2f Gamepad::get ( Thumb  thumb) const
noexcept

获取摇杆数据.

参数
thumb摇杆.
返回
范围: [-1, 1]

◆ get() [3/3]

float Gamepad::get ( Trigger  trigger) const
noexcept

获取线性按键力度.

参数
trigger线性按键.
返回
0 表示没有按下, 范围: [0, 1]

◆ get_raw() [1/2]

Vector2f Gamepad::get_raw ( Thumb  thumb) const
noexcept

获取原始摇杆数据.

参数
thumb摇杆.
返回
范围: [-1, 1]
警告
不建议直接使用.

◆ get_raw() [2/2]

float Gamepad::get_raw ( Trigger  trigger) const
noexcept

获取原始线性按键数据.

参数
trigger线性按键.
返回
0 表示没有按下, 范围: [0, 1]
警告
不建议直接使用.

◆ is_connected()

bool Gamepad::is_connected ( ) const

检查手柄是否处于连接状态.

返回
是否已连接.

◆ load_mappings_db()

bool Gamepad::load_mappings_db ( const std::filesystem::path &  path)

加载 SDL 按键映射数据库.

参数
path数据库文件地址.
返回
是否成功.

◆ set_vibration()

void Gamepad::set_vibration ( float  leftSpeed,
float  rightSpeed 
)

设置震动反馈.

参数
leftSpeed左马达转速.
rightSpeed右马达转速.
警告
仅在 Windows 下支持 XBox.

该类的文档由以下文件生成: