从修改“Space War Starter Kit”例子学习XNA
2006-09-12 00:56
483 查看
最近要忙的事情特别多,有社区的事情,自己也忙的很,有一段时间没研究XNA了,不过XNA仍然是不错的引擎,所以我是不会放弃的,我们XNA爱好者群也有好多热心的群友一直分享着自己的成果,比如“佐罗大侠(QQ:230206268),经常推出自己的视频教程,真是要谢谢他。也希望其他群友加油,其实每个人都分享一点,那每个人都得到无数点。
废话少说,下面是教程(完整WORD文档,请到QQ群:26888039下载)。
这个教程教你从零开始安装XNA开发环境以及修改XNA自带的例子“Space War Starter Kit”来学习和提升XNA开发技能。
如果您是新手,请参考下列步骤来搭建您的XNA开发环境。
第一步:下载和安装DirectX SDK
http://www.microsoft.com/downloads/details.aspx?FamilyId=C72D9F1E-53F3-4747-8490-6801D8E8B4EF&displaylang=en
第二步:下载和安装Visual C# 2005 Express Edition
http://msdn.microsoft.com/vstudio/express/visualcsharp/download/
第三步:下载和安装Microsoft XNA Game Studio Express (Beta)
http://www.microsoft.com/downloads/details.aspx?familyid=21e979e3-b8ae-4ea6-8e65-393ea7684d6c&displaylang=en
OK,接下来就让我们一起“把玩把玩”XNA自带的例子:“Space War Starter Kit”。
首先,请您打开刚安装的Visual C# 2005 Express Edition
接着,新增一个Project(File->New Project),并选择“Space War Starter Kit”(如下图所示),按下OK按钮。
现在您应该可以编译并运行这个刚刚创建的游戏例子“Space War Starter Kit”了。请选择Debug->Start Without Debugging 或则直接按下 Ctrl+F5组合键来执行这个游戏。(结果如下图)
如果您没有XBOX360游戏机,那您将无法选择上图所示的开始菜单。因为“Space War Starter Kit”这个游戏默认是在XBOX360上运行的,所以不受键盘控制,不过我们可以修改它,把它改成PC版本。具体的做法是打开“common”目录下的“GamePadHelper.cs”文件,把下面所示的代码(在文件第一行):
//#define USE_KEYBOARD
改成如下代码(既把前面的注解屏蔽符号//去掉).
#define USE_KEYBOARD
再次按下Ctrl+F5编译和运行这个游戏。这次就可以使用您的键盘控制游戏了,你会发现键盘的A,B键对应游戏的A,B按纽(见上图),不过我们也可以自己定义功能按键。比如,游戏默认是使用S, W, D, X来控制飞船移动的,我发现控制起来很麻烦,于是我把它改成W, A, S, D控制飞船移动,使用空格键射击。修改的具体方法是:往下翻到65行,您应该会看到以下代码:
#if USE_KEYBOARD
// Setup Dictionary with defaults
keyMapping.Add(GamePadKeys.Start, Keys.Home);
keyMapping.Add(GamePadKeys.Back, Keys.End);
keyMapping.Add(GamePadKeys.A, Keys.A);
keyMapping.Add(GamePadKeys.B, Keys.B);
keyMapping.Add(GamePadKeys.X, Keys.X);
keyMapping.Add(GamePadKeys.Y, Keys.Y);
keyMapping.Add(GamePadKeys.Up, Keys.Up);
keyMapping.Add(GamePadKeys.Down, Keys.Down);
keyMapping.Add(GamePadKeys.Left, Keys.Left);
keyMapping.Add(GamePadKeys.Right, Keys.Right);
keyMapping.Add(GamePadKeys.LeftTrigger, Keys.LShiftKey);
keyMapping.Add(GamePadKeys.RightTrigger, Keys.RShiftKey);
keyMapping.Add(GamePadKeys.ThumbstickLeftXMin, Keys.S);
keyMapping.Add(GamePadKeys.ThumbstickLeftXMax, Keys.D);
keyMapping.Add(GamePadKeys.ThumbstickLeftYMin, Keys.X);
keyMapping.Add(GamePadKeys.ThumbstickLeftYMax, Keys.W);
keyMapping.Add(GamePadKeys.ThumbstickRightXMin, Keys.J);
keyMapping.Add(GamePadKeys.ThumbstickRightXMax, Keys.L);
keyMapping.Add(GamePadKeys.ThumbstickRightYMin, Keys.M);
keyMapping.Add(GamePadKeys.ThumbstickRightYMax, Keys.I);
#endif
把上面整个代码块改成下面代码块。.
#if USE_KEYBOARD
// Setup Dictionary with defaults
keyMapping.Add(GamePadKeys.Start, Keys.Home);
keyMapping.Add(GamePadKeys.Back, Keys.End);
keyMapping.Add(GamePadKeys.A, Keys.Space);
keyMapping.Add(GamePadKeys.B, Keys.B);
keyMapping.Add(GamePadKeys.X, Keys.X);
keyMapping.Add(GamePadKeys.Y, Keys.Y);
keyMapping.Add(GamePadKeys.Up, Keys.Up);
keyMapping.Add(GamePadKeys.Down, Keys.Down);
keyMapping.Add(GamePadKeys.Left, Keys.Left);
keyMapping.Add(GamePadKeys.Right, Keys.Right);
keyMapping.Add(GamePadKeys.LeftTrigger, Keys.LShiftKey);
keyMapping.Add(GamePadKeys.RightTrigger, Keys.RShiftKey);
keyMapping.Add(GamePadKeys.ThumbstickLeftXMin, Keys.A);
keyMapping.Add(GamePadKeys.ThumbstickLeftXMax, Keys.D);
keyMapping.Add(GamePadKeys.ThumbstickLeftYMin, Keys.S);
keyMapping.Add(GamePadKeys.ThumbstickLeftYMax, Keys.W);
keyMapping.Add(GamePadKeys.ThumbstickRightXMin, Keys.J);
keyMapping.Add(GamePadKeys.ThumbstickRightXMax, Keys.L);
keyMapping.Add(GamePadKeys.ThumbstickRightYMin, Keys.M);
keyMapping.Add(GamePadKeys.ThumbstickRightYMax, Keys.I);
#endif
现在您应该可以使用键盘的W, A, S, D按键来控制游戏了。
经过试玩,您是不是觉得子弹的移动速度太慢了,不够刺激,OK,让我们给它加速,请您打开Ship.cs文件,翻到29行。
找到下面这行代码:
private const float shotSpeed = 150.0f;
并把其改成下面这一句(其实就是把150改成250,您应该用你的鼻子猜到这个数字代表什么了吧)
private const float shotSpeed = 250.0f;
再次运行游戏,这次您应该看到高速飞驰的子弹了。
如果您觉得子弹连发射击不好,那让我们为子弹填加一个扩散效果。同样在Ship.cs文件,请翻到182行找到下面代码块。
else
{
bullets.Add(player,
Vector3.Transform(bulletOffsets[(int)player, (int)SpacewarGame.Players[(int)player].ShipClass], Shape.World),
Velocity + Vector3.Multiply(direction, shotSpeed),
Rotation.Z,
time, particles);
}
把上面代码改成下面所示的代码:
else
{
bullets.Add(player,
Vector3.Transform(bulletOffsets[(int)player, (int)SpacewarGame.Players[(int)player].ShipClass], Shape.World),
Velocity + Vector3.Multiply(direction, shotSpeed),
Rotation.Z,
time, particles);
direction.X = (float)(-Math.Sin(Rotation.Z + 0.5f));
direction.Y = (float)(Math.Cos(Rotation.Z + 0.5f));
direction.Normalize();
bullets.Add(player,
Vector3.Transform(bulletOffsets[(int)player, (int)SpacewarGame.Players[(int)player].ShipClass], Shape.World),
Velocity + Vector3.Multiply(direction, shotSpeed),
Rotation.Z,
time, particles);
direction.X = (float)(-Math.Sin(Rotation.Z - 0.5f));
direction.Y = (float)(Math.Cos(Rotation.Z - 0.5f));
direction.Normalize();
bullets.Add(player,
Vector3.Transform(bulletOffsets[(int)player, (int)SpacewarGame.Players[(int)player].ShipClass], Shape.World),
Velocity + Vector3.Multiply(direction, shotSpeed),
Rotation.Z,
time, particles);
}
现在你是不是又想每次增加每次射击的子弹数量?没问题,您只要打开settings.xml文件,并下翻到44行。
找到下列代码.
<Max>5</Max>
改成.
<Max>25</Max>
最后,我们再来一个更有意思的:设置太阳的牵引力。同样是settings.xml文件,请翻到13行。
.找到以下代码
<GravityStrength>500000</GravityStrength>
把其改成下面代码,看看会有什么效果。
<GravityStrength>-800000</GravityStrength>
有任何建议或者疑问,请联系 Submit@XNASpot.com .
原文www.xnaspot.com 翻译:XNA爱好者QQ群: 26888039 (www.xnacn.net) – 转载请保留此行信息
下次会有更精彩的内容,也欢迎热心的您投稿!
废话少说,下面是教程(完整WORD文档,请到QQ群:26888039下载)。
这个教程教你从零开始安装XNA开发环境以及修改XNA自带的例子“Space War Starter Kit”来学习和提升XNA开发技能。
如果您是新手,请参考下列步骤来搭建您的XNA开发环境。
第一步:下载和安装DirectX SDK
http://www.microsoft.com/downloads/details.aspx?FamilyId=C72D9F1E-53F3-4747-8490-6801D8E8B4EF&displaylang=en
第二步:下载和安装Visual C# 2005 Express Edition
http://msdn.microsoft.com/vstudio/express/visualcsharp/download/
第三步:下载和安装Microsoft XNA Game Studio Express (Beta)
http://www.microsoft.com/downloads/details.aspx?familyid=21e979e3-b8ae-4ea6-8e65-393ea7684d6c&displaylang=en
OK,接下来就让我们一起“把玩把玩”XNA自带的例子:“Space War Starter Kit”。
首先,请您打开刚安装的Visual C# 2005 Express Edition
接着,新增一个Project(File->New Project),并选择“Space War Starter Kit”(如下图所示),按下OK按钮。
现在您应该可以编译并运行这个刚刚创建的游戏例子“Space War Starter Kit”了。请选择Debug->Start Without Debugging 或则直接按下 Ctrl+F5组合键来执行这个游戏。(结果如下图)
如果您没有XBOX360游戏机,那您将无法选择上图所示的开始菜单。因为“Space War Starter Kit”这个游戏默认是在XBOX360上运行的,所以不受键盘控制,不过我们可以修改它,把它改成PC版本。具体的做法是打开“common”目录下的“GamePadHelper.cs”文件,把下面所示的代码(在文件第一行):
//#define USE_KEYBOARD
改成如下代码(既把前面的注解屏蔽符号//去掉).
#define USE_KEYBOARD
再次按下Ctrl+F5编译和运行这个游戏。这次就可以使用您的键盘控制游戏了,你会发现键盘的A,B键对应游戏的A,B按纽(见上图),不过我们也可以自己定义功能按键。比如,游戏默认是使用S, W, D, X来控制飞船移动的,我发现控制起来很麻烦,于是我把它改成W, A, S, D控制飞船移动,使用空格键射击。修改的具体方法是:往下翻到65行,您应该会看到以下代码:
#if USE_KEYBOARD
// Setup Dictionary with defaults
keyMapping.Add(GamePadKeys.Start, Keys.Home);
keyMapping.Add(GamePadKeys.Back, Keys.End);
keyMapping.Add(GamePadKeys.A, Keys.A);
keyMapping.Add(GamePadKeys.B, Keys.B);
keyMapping.Add(GamePadKeys.X, Keys.X);
keyMapping.Add(GamePadKeys.Y, Keys.Y);
keyMapping.Add(GamePadKeys.Up, Keys.Up);
keyMapping.Add(GamePadKeys.Down, Keys.Down);
keyMapping.Add(GamePadKeys.Left, Keys.Left);
keyMapping.Add(GamePadKeys.Right, Keys.Right);
keyMapping.Add(GamePadKeys.LeftTrigger, Keys.LShiftKey);
keyMapping.Add(GamePadKeys.RightTrigger, Keys.RShiftKey);
keyMapping.Add(GamePadKeys.ThumbstickLeftXMin, Keys.S);
keyMapping.Add(GamePadKeys.ThumbstickLeftXMax, Keys.D);
keyMapping.Add(GamePadKeys.ThumbstickLeftYMin, Keys.X);
keyMapping.Add(GamePadKeys.ThumbstickLeftYMax, Keys.W);
keyMapping.Add(GamePadKeys.ThumbstickRightXMin, Keys.J);
keyMapping.Add(GamePadKeys.ThumbstickRightXMax, Keys.L);
keyMapping.Add(GamePadKeys.ThumbstickRightYMin, Keys.M);
keyMapping.Add(GamePadKeys.ThumbstickRightYMax, Keys.I);
#endif
把上面整个代码块改成下面代码块。.
#if USE_KEYBOARD
// Setup Dictionary with defaults
keyMapping.Add(GamePadKeys.Start, Keys.Home);
keyMapping.Add(GamePadKeys.Back, Keys.End);
keyMapping.Add(GamePadKeys.A, Keys.Space);
keyMapping.Add(GamePadKeys.B, Keys.B);
keyMapping.Add(GamePadKeys.X, Keys.X);
keyMapping.Add(GamePadKeys.Y, Keys.Y);
keyMapping.Add(GamePadKeys.Up, Keys.Up);
keyMapping.Add(GamePadKeys.Down, Keys.Down);
keyMapping.Add(GamePadKeys.Left, Keys.Left);
keyMapping.Add(GamePadKeys.Right, Keys.Right);
keyMapping.Add(GamePadKeys.LeftTrigger, Keys.LShiftKey);
keyMapping.Add(GamePadKeys.RightTrigger, Keys.RShiftKey);
keyMapping.Add(GamePadKeys.ThumbstickLeftXMin, Keys.A);
keyMapping.Add(GamePadKeys.ThumbstickLeftXMax, Keys.D);
keyMapping.Add(GamePadKeys.ThumbstickLeftYMin, Keys.S);
keyMapping.Add(GamePadKeys.ThumbstickLeftYMax, Keys.W);
keyMapping.Add(GamePadKeys.ThumbstickRightXMin, Keys.J);
keyMapping.Add(GamePadKeys.ThumbstickRightXMax, Keys.L);
keyMapping.Add(GamePadKeys.ThumbstickRightYMin, Keys.M);
keyMapping.Add(GamePadKeys.ThumbstickRightYMax, Keys.I);
#endif
现在您应该可以使用键盘的W, A, S, D按键来控制游戏了。
经过试玩,您是不是觉得子弹的移动速度太慢了,不够刺激,OK,让我们给它加速,请您打开Ship.cs文件,翻到29行。
找到下面这行代码:
private const float shotSpeed = 150.0f;
并把其改成下面这一句(其实就是把150改成250,您应该用你的鼻子猜到这个数字代表什么了吧)
private const float shotSpeed = 250.0f;
再次运行游戏,这次您应该看到高速飞驰的子弹了。
如果您觉得子弹连发射击不好,那让我们为子弹填加一个扩散效果。同样在Ship.cs文件,请翻到182行找到下面代码块。
else
{
bullets.Add(player,
Vector3.Transform(bulletOffsets[(int)player, (int)SpacewarGame.Players[(int)player].ShipClass], Shape.World),
Velocity + Vector3.Multiply(direction, shotSpeed),
Rotation.Z,
time, particles);
}
把上面代码改成下面所示的代码:
else
{
bullets.Add(player,
Vector3.Transform(bulletOffsets[(int)player, (int)SpacewarGame.Players[(int)player].ShipClass], Shape.World),
Velocity + Vector3.Multiply(direction, shotSpeed),
Rotation.Z,
time, particles);
direction.X = (float)(-Math.Sin(Rotation.Z + 0.5f));
direction.Y = (float)(Math.Cos(Rotation.Z + 0.5f));
direction.Normalize();
bullets.Add(player,
Vector3.Transform(bulletOffsets[(int)player, (int)SpacewarGame.Players[(int)player].ShipClass], Shape.World),
Velocity + Vector3.Multiply(direction, shotSpeed),
Rotation.Z,
time, particles);
direction.X = (float)(-Math.Sin(Rotation.Z - 0.5f));
direction.Y = (float)(Math.Cos(Rotation.Z - 0.5f));
direction.Normalize();
bullets.Add(player,
Vector3.Transform(bulletOffsets[(int)player, (int)SpacewarGame.Players[(int)player].ShipClass], Shape.World),
Velocity + Vector3.Multiply(direction, shotSpeed),
Rotation.Z,
time, particles);
}
现在你是不是又想每次增加每次射击的子弹数量?没问题,您只要打开settings.xml文件,并下翻到44行。
找到下列代码.
<Max>5</Max>
改成.
<Max>25</Max>
最后,我们再来一个更有意思的:设置太阳的牵引力。同样是settings.xml文件,请翻到13行。
.找到以下代码
<GravityStrength>500000</GravityStrength>
把其改成下面代码,看看会有什么效果。
<GravityStrength>-800000</GravityStrength>
有任何建议或者疑问,请联系 Submit@XNASpot.com .
原文www.xnaspot.com 翻译:XNA爱好者QQ群: 26888039 (www.xnacn.net) – 转载请保留此行信息
下次会有更精彩的内容,也欢迎热心的您投稿!
相关文章推荐
- Xna Beta的starter Kit spacewar研究手记(1)
- Commerce Starter Kit 学习(2)
- storm-starter 例子学习
- Spring.NET学习实践(2) ---修改下我们的小例子
- Portal Starter Kit 学习之-上传下载
- .NET 4.0 的Web Form和EF的例子 Employee Info Starter Kit (v4.0.0)
- asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop )学习资料
- 学习ASP.NET Starter Kit[Portal](20050702)
- 学习ASP.NET Starter Kit[Community](20050704)
- Portal Starter Kit学习小记
- XNA starter kit - starwar
- Commerce Starter Kit 学习(1)
- Commerce Starter Kit 学习(3)
- Portal Starter Kit 学习之-问题答复列表
- Meteor学习路程(三)之数据库的例子(4)【修改】
- Spring.NET学习实践(2) ---修改下我们的小例子
- JAVA学习日志 关于调用方法、生成对象的例子。还是用数字卦程序修改
- asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料
- 学习E-Commerce Starter Kit (1)
- 学习ASP.NET Starter Kit[Portal](20050701)