raylib U3 - 加载背景图,背景滑动和反弹

通过背景图的滑动来创造角色移动的效果是游戏的基础操作之一。像什么横版闯关游戏,超级玛丽、魂斗罗、迷宫类的都是这个原理。
这一篇就简单实现一个大的背景图在小窗口里移动的效果

imageimage

背景的移动其实很好做,横坐标不停减就行了。这里我们讲一下怎么判断有没有到边界。画个图,计算一下边界值,这个式子很容易就出来了。

image

背景图素材。大家可以用自己喜欢的图片,不过注意要png格式的。

image

下面是具体的代码。

#include <raylib.h>
#include<bits/stdc++.h>
using namespace std;
int main() {
	
	//创建一个主窗口
	InitWindow(800, 600,"Test");
	
	SetTargetFPS(60);//设置刷新率
	
	int imgw,imgh;
	
	//加载一个图片文件
	Image backimg=LoadImage("back.png");
	imgw=backimg.width;//获取图片的宽和高
	imgh=backimg.height;
	//创建图片的绘制对象
	Texture backTexture = LoadTextureFromImage(backimg);
	UnloadImage(backimg);
	
	int x=0,y=0;
	int sx=-1,sy=-1;
	
	while (!WindowShouldClose()) {
		//x和y的值改变,背景就移动了
		x+=sx;
		y+=sy;
		
		//边界判断
		if(imgw+x<=800 || x>=0){
			sx*=-1;
		}
		if(imgh+y<=600 || y>=0){
			sy*=-1;
		}
		
		//绘制帧,这一Part都是放在循环的最后的
		BeginDrawing();//开始绘制
		ClearBackground(WHITE);//重新绘制一些背景。
		
		//绘制图片对象
		DrawTexture(backTexture,x,y,WHITE);
		
		EndDrawing();//结束绘制
	}
	
	//关闭窗口
	CloseWindow();
	return 0;
}



posted @ 2025-02-15 10:21  一亩食堂  阅读(133)  评论(0)    收藏  举报