2

嗨,我正在开发 SDL/C 游戏,我制作了一个带有大背景 (6000*1024) 和 (1024*768) 屏幕的相机滚动,

game.screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE ); 

所以如果我想在屏幕上粘贴一些东西作为目的地:

apply_surface( xxx, yyy, map.BALL, game.screen, NULL );

移动时它会跟随相机,对于敌人来说不是这样,他们应该在背景而不是屏幕上移动!

因此,如果我在背景上将某些东西作为目的地,我会遇到以下问题,

apply_surface( xxx, yyy, map.BALL, map.background, NULL );

移动时旧图像保留在背景上 ,如下图所示:

4

1 回答 1

0

首先我不得不说你实现相机滚动的方式相当繁重。我建议您将对象直接绘制到屏幕表面,同时考虑相机位置。

如果你想坚持你的计划,你应该在重绘之前清除你的背景。这可以使用命令 SDL_FillRect 来完成。

// Replace 101, 102, 103 with the background color you want
SDL_FillRect(map.background, NULL, SDL_MapRGB(map.background->format, 101, 102, 103));
于 2013-04-30T20:56:12.557 回答