raylib绘图库--瞿华
2022.7.1
知乎 1、raylib绘图库简介

知乎 2、raylib 2d动画/游戏教程(1)动画基本原理

知乎 3、raylib 2d动画/游戏教程(2)坐标系与颜色系统

知乎 4、raylib 2d动画/游戏教程(3)图像文件与图层

知乎 5、raylib 2d动画/游戏教程(4)raylib-drawing库

知乎 6、raylib 2d动画/游戏教程(5)键盘与鼠标输入

知乎 7、raylib 2d动画/游戏教程(6)游戏手柄输入

知乎 8、raylib 2d动画/游戏教程(7)音乐和音效

知乎 9、raylib绘制中文内容

知乎 10、使用raygui绘制控件

知乎 11、raylib 3d绘图基础教程(1)坐标系和摄像机

知乎 12、raylib 3d绘图基础教程(2)网格(Mesh)

知乎 13、raylib 3d绘图基础教程(3)几何变换

知乎 14、raylib 3d绘图基础教程(4)3d模型的载入与绘制

raylib 2d动画/游戏教程(6)游戏手柄输入

raylib支持获取游戏手柄的输入。其使用方式和鼠标类似。下面的程序演示了如何判断是否按下了第一个xbox手柄的B键。

#include <raylib.h>
#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600
#define RACOON_FRAMES 12
int main() {
	InitWindow(WINDOW_WIDTH,WINDOW_HEIGHT,"test");
	SetTraceLogLevel(LOG_WARNING);
	SetTargetFPS(24);//降CPU占用
	if(!IsGamepadAvailable(0))
	{
		SetWindowTitle("Gamepad not found."); 
		//无xbox手柄
		while(!WindowShouldClose())
		{
			BeginDrawing();
				ClearBackground(WHITE);//无则闪烁
				DrawText("Gamepad not found.",0,0,22,(Color){255,0,0,255});
			EndDrawing();
			WaitTime(0.9);//降CPU占用
		}
		return 0;
	}
	//读入图片文件
	Texture tBackground=LoadTexture("background.png");
	//读入拼接图片
	Texture tRacoon = LoadTexture("racoon-total.png");
	int stepX=1,racoonX=0,racoonY=300,racoonFrame=0,racoonTargetFrame=0;
	while(!WindowShouldClose()) {
		//xbox手柄的B键
		if (IsGamepadButtonDown(0,GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) {
			if (racoonFrame==0)racoonTargetFrame+=RACOON_FRAMES;
			else racoonTargetFrame++;
		}
		if (racoonFrame<racoonTargetFrame) {
			racoonFrame++;
			if (racoonFrame>=racoonTargetFrame) {
				racoonFrame=0;
				racoonTargetFrame=0;
			}
			racoonX+=stepX;
			racoonX+=stepX;
		}
		int i = racoonFrame % RACOON_FRAMES;
		int frameX=(i%4)*200;
		int frameY=(i/4)*200;
		BeginDrawing();
			//叠加显示图层。注意显示的顺序
			DrawTexture(tBackground,0,0,WHITE);
			DrawTextureRec(tRacoon,
				(Rectangle){frameX,frameY,200,200},
				(Vector2){racoonX,racoonY},
				WHITE);
		EndDrawing();
	}
	UnloadTexture(tRacoon);
	UnloadTexture(tBackground);
	CloseWindow();
}

本文中所用的素材图片来自opengameart.org,可以直接在百度网盘下载:
链接:https://pan.baidu.com/s/1wGqJ_gBC3KzXmH5tNiR1kA
提取码:vsro