您的位置:首页 > 编程语言 > C#

Silverlight.XNA(C#)跨平台3D游戏研发手记:(十一)3D SLG(策略战棋游戏)设计案例

2012-06-19 08:46 537 查看
某天,当你一不小心发现已经够随心所欲的驾驭3D摄像机之时,任何类型的3D游戏都将成为囊中玩物,过往如烟。

回忆逝去的童年让我极度惦记的SLG策略战棋游戏,或许对于大多数玩家来说,它费时费力不被讨好;然而深邃的内涵和无限可能的战略战术始终占据着我内心很大一片天地。于是,在本系列前5节2D SLG知识原理的基础上,萌发了移植一款基于平面的3D SLG Demo计划。

首先,什么是基于平面的3D SLG游戏?大伙不妨先看看以下几款该类型经典游戏巨作截图 - 《英雄无敌6》、《文明5》和《三国志11》:

角色两种移动模式算法

List<Vector3> movePath = new List<Vector3>();
float xMoveSpeed, zMoveSpeed;
/// <summary>
/// A*寻路向目的地移动
/// </summary>
public void MoveTo(Vector3 coordinate, byte[,] matrix) {
if (movePath.Count == 0) {
//movePath.Clear();
PathFinderFast pathFinderFast = new PathFinderFast(matrix) {
TileDirectionNum = Global.TileDirectionNum,
HeuristicEstimate = 2,
SearchLimit = 200,
};
List<PathFinderNode> path = pathFinderFast.FindPath(
new Point() { X = (int)Coordinate.X, Y = (int)Coordinate.Z },
new Point() { X = (int)coordinate.X, Y = (int)coordinate.Z }
);
if (path == null || path.Count < 1) {
//路径不存在
return;
} else {
switch (Global.MoveMode) {
case MoveModes.Line:
movePath.Add(new Vector3((float)path[0].X, 0, (float)path[0].Y));
Vector3 v = Terrain.GetPositionFromCoordinate(movePath[0]);
float distance = (float)Math.Sqrt(Math.Pow((v.X - Position.X), 2) + Math.Pow((v.Z - Position.Z), 2));
float countMove = distance / MoveSpeed;
xMoveSpeed = (Math.Abs(v.X - Position.X) / countMove) * (v.X < Position.X ? -1 : 1);
zMoveSpeed = Math.Abs(v.Z - Position.Z) / countMove * (v.Z < Position.Z ? -1 : 1);
RotationY = MathHelper.ToRadians(90 - MathHelper.ToDegrees((float)Math.Atan2(v.Z - Position.Z, v.X - Position.X))); //纠正角度
break;
case MoveModes.Path:
for (int i = path.Count - 1; i >= 0; i--) {
movePath.Add(new Vector3((float)path[i].X, 0, (float)path[i].Y));
}
break;
}
}
Run();
}
}

嘿嘿,收工。

啥?

人太少不给力?

那么我们刷300个《魔兽世界》里的小怪出来开心开心吧,顺便也检测下本节的各种3D算法是否正确:



本节Demo源码下载地址:(WP)SLXnaGame3

Silverlight版本下载地址:(SL)SLXnaGame3

在线演示地址:Cangod.com

手记小结:《魔兽世界》运行于Windows Phone 和 Silverlight之上,想想都让人口水直流;因为我们对游戏的执着与狂热,使得这个梦想变得不再遥不可及。 3D游戏开发今非昔比,日新月异的技术进步让它变得并非难如炼狱;长期的2D游戏积累和虔诚的设计感悟,从2D向3D转型一日千里。磨练过的勇士将创新出更多属于中国自己的游戏奇迹,你手中的键盘鼠标便是最锋利的战具!

Silverlight三国类万人国战页游 - 《国策》《战龙在野》全面开启,诚邀大家参与体验~

参考推荐NowpaperWilliams关于Windows Phone的游戏开发博客。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐