这是一个漫长的假期周末,所以我再次得到了编码错误并开始玩游戏:
马里奥http://gfilter.net/junk/tileengine.jpg
我写了一个基本的瓦片引擎,但之前从未尝试过这个,我真的很难处理精灵碰撞检测并实现重力的真实物理.
对于任何其他游戏爱好作家,你能指出一些关于最佳方法的演练吗?
更新:
我以为我会分享进度报告:
http://www.youtube.com/watch?v=-RKNQ2UiiLY < - 游戏在行动中
它仍然是真正的马车,但碰撞检测主要是工作,我已经开始研究其他一些功能(如碰撞块(注意错误)和与敌人交互).
马里奥仍像他在月球上走路一样,我正在使用这些常数,有什么建议可以调整它们以获得更真实的效果吗?
const float AirDrag = 1.00f;
const float GroundFriction = .97f;
const float Gravity = 0.8f;
Run Code Online (Sandbox Code Playgroud) 我有一个问题:我的瓷砖引擎需要一个算法.
我有一个2d阵列存储我的不可走路的瓷砖.
现在我想实现一个轻型引擎,但这个引擎需要暗影船体.
所以我需要一个能够创建这些影子船体的算法.
我需要一组矩形来绑定数组中不可走的部分(具有1
s 的单元格)
例如:
黑色瓷砖是1
s; 我需要找到完全包围它们的红色矩形集.
我正在尝试使用像素着色器和两个纹理创建一个tile引擎.一个纹理将保持tileset,一个将保存地图.
是否可以将纹理数据作为实际(非采样)数据读取,以便从地图中提取索引?
读取像素数据的最佳方法是什么?
我只尝试过text2D,但是还有一些不足之处(说实话,我对像素着色器有点新意).
基本上,我需要一种方法来从地图纹理中的特定像素读取实际数据,并将其用作切片纹理的整数索引.假设我已经设法创建并将适当的纹理传递给着色器.
有什么想法吗?
(使用monogame for metro所以dx等级9_1)
我正在做一个游戏(并且已经对它提出了几个问题),现在我还有一个问题要问你们.
这个游戏中的关卡格式被设置为Uint16的平铺图(我正在使用SDL),这是tilemapData结构数组的索引.tilemapData结构的一个位是isConductive位/布尔值.
这个位的使用基本上是创建将各种对象连接成一个"powerNet"的路径.我在下面有一些关于当前方法的代码(可行,但我会介绍为什么我真的讨厌它)
void findSetPoweredObjects(unsigned long x, unsigned long y, powerNetInfo * powerNet) {
//Look for poweredObjs on this tile and set their powerNet to the given powernet
for (int i = 0; i < level->numChunks[CHUNKTYPE_POWEREDDEF]; i++)
if (level->poweredObjects[i]->position[0] == x && level->poweredObjects[i]->position[1] == y)
level->poweredObjects[i]->powerNet = powerNet, powerNet->objectsInNet++;
}
void recursiveCheckTile(bool * isWalked, powerNetInfo * powerNet, unsigned long x, unsigned long y, tilemapData * levelMap) {
//If out of bounds, return
if (x < 0 || y < 0 …
Run Code Online (Sandbox Code Playgroud) 我正在寻求的建议不仅仅是直接的帮助.
我正在使用XNA的8位平台游戏.我已经沉入160小时了,我开始遇到引擎问题了.它基本上是XNA平台演示的改编/修改版本.我的所有或大部分瓷砖都是32x32,但有些是64宽,32像素高,就像一张桌子.有些是32宽,64高,像植物.
我将它们一次性发送到gpu只有一个.png,类似于XNA教程的作者进行磁贴映射的方式.对于动画精灵,我会使用角色的不同帧的平铺地图.对于tile地图数据,我在文本文件中读取就像XNA教程一样.
我应该如何容纳宽而高的瓷砖?我应该制作一个两层瓦片系统(我想我应该遵守keep-it-simple-stupid规则)?
现在我正在使用透明瓷砖来扩展宽瓷砖.
办公桌椅:
椅子http://dl.dropbox.com/u/8446900/game_screen_desk.png
.....
...h.
..d".
#####
Run Code Online (Sandbox Code Playgroud)
植物和椅子:
办公桌http://dl.dropbox.com/u/8446900/game_screen_plant.png
..p...h.
..,...,.
########
Run Code Online (Sandbox Code Playgroud)
椅子是'h','d'用于桌面,'p'是植物,','用于透明背景图块(不与用户交互).'''是一个透明的瓷砖,用户可以站在那里(伸展桌子).问题是,正如你所看到的,背景似乎有一个洞.
我应该制作一个实际的瓷砖地图并将所有内容组合成一个大的png吗?我可以采取的另一个选择是将每个宽或高的瓷砖切割成两个不同的瓷砖.专业人士如何做到这一点?我不是在寻找一个快速而肮脏的解决方案,而是现代平台游戏的运行方式.
更新:在查看答案后,我发现了一个非常有用的工具,可以将精灵打包成一张纸.
http://spritesheetpacker.codeplex.com/
更新:我新升级的磁贴引擎更快,几乎一样简单.以下建议很棒.强力推荐.