基于2D平铺的游戏引擎 – 使用C#在XNA中进行层管理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于2D平铺的游戏引擎 – 使用C#在XNA中进行层管理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2091字,纯文字阅读大概需要3分钟。
内容图文
我打算建立一个先进的2D Up-Down RPG.
它将是我现有2D Flash RPG引擎(Adobe Air)的C#XNA版本.
好吧,在Flash Pro中,我只是为不同的图层使用不同的MovieClip,但我怎么能在使用XNA的C#中实现呢?
我希望能够使用我制作的Flash Map Editor中的输出(map-data-file).
输出文件如下所示:
<layer1>
0.0.0.A.A.A.A.B.B.A.A.0.0.0
0.0.0.A.A.A.A.B.B.B.A.A.0.0
0.0.A.A.A.B.B.B.B.B.B.A.0.0
0.A.A.A.A.B.B.B.B.B.B.A.A.0
0.A.A.A.A.B.B.B.B.B.B.A.A.0
0.A.A.A.A.A.B.B.B.B.B:B.A.0
0.0.A.A.A.A.B.B.B.B.A.A.A.0
0.0.A.A.A.A.A.B.B.A.A.A.0.0
0.0.0.A.A.A.A.B.B.A.A.0.0.0
<layer2>
. . . . .
. . .
.
.
<layer3>
.
.
.
等……
哪里:
0 = Blank;
A = Gras;
B = Water;
所以我想简单地遍历这些行,保存在数组中并将相应的精灵添加到特定图层,可能是这样的:
Layers[2].Add( tile, x, y );
我怎么能意识到这一点?而且,我怎样才能管理z排序,因此我希望能够在桥下行走,或者通过隧道行驶.
(就像在这张图片中,可能有一艘船在桥上行驶)
甚至一些楼梯进入下一阶段(开关层)
你们对我有什么想法甚至是反思吗?
thx你所有的答案!
编辑:
层hirachy shoult看起来像这样:
map{
Layer[0] { // "bg"
xyArray{ .... }
}
Layer[1] { // "static" - bottom part / stairs of the bridge
xyArray{ .... }
}
Layer[2] { // "items"
xyArray{ .... }
}
Layer[3] { // "player"
xyArray{ .... }
}
Layer[4] { // "static2" - top part of bridge
xyArray{ .... }
}
}
// if the player is ON a tile that hat a Stair funktion, the "player" layer will be
// moved on top of the "static2" layer, so 'Layer[3].Z = 4;' and 'Layer[4].Z = 3;'
// like i showed in the Switch funktion up there
解决方法:
SpriteBatch.Draw方法具有允许您指定Layer的重载
具体来说,表here的底部有两个条目
该图层是一个介于0和1之间的浮点数.您还需要在SpriteBatch.Begin()中指定SpriteSortMode.下面是我写的一个棋盘游戏的示例,该棋盘游戏为玩家代币着色并将活动玩家移动到堆叠的最前面,以便当多个玩家占据同一个方块时:
if (i == currentPlayer)
{
SpriteColor = Color.White;
spriteDepth = 0f; // Front
}
else
{
SpriteColor = Color.Gray;
spriteDepth = 0.1f; // Back
}
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
spriteBatch.Draw(players[i].Sprite, SquareCentre, null, SpriteColor, 0f, SpriteCentre,0.5f, SpriteEffects.None, spriteDepth);
spriteBatch.End();
希望这可以帮助.
内容总结
以上是互联网集市为您收集整理的基于2D平铺的游戏引擎 – 使用C#在XNA中进行层管理全部内容,希望文章能够帮你解决基于2D平铺的游戏引擎 – 使用C#在XNA中进行层管理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。