XNA判断键盘和鼠标输入状态的静态的类的实现

不得不说……命运艺术进度越来越高了……但是大地无敌要上高三了……矛盾呀。
如果连自己都不相信,又能改变什么呢?
额。

提供命运艺术中一个比较有价值的静态类,可以判断是否按了一下某个键,可以稍加修改或直接使用……
事实上原理很简单,把该帧的键盘状态和上一帧作比较,如果上一帧未按下某个键而该帧按下,说明这个键按了……
在Game中Update方法的最开头执行该类的UpdateInput即可。
201005160000100256.rar

不得不说……命运艺术进度越来越高了……但是大地无敌要上高三了……矛盾呀。
如果连自己都不相信,又能改变什么呢?
额。

提供命运艺术中一个比较有价值的静态类,可以判断是否按了一下某个键,可以稍加修改或直接使用……
事实上原理很简单,把该帧的键盘状态和上一帧作比较,如果上一帧未按下某个键而该帧按下,说明这个键按了……
在Game中Update方法的最开头执行该类的UpdateInput即可。
201005160000100256.rar

XNA 天空盒的傻瓜版实现方法


天空是必不可少的.
所以说,一种傻瓜实现方法

1、下载大地无敌做好拆好UV的天空盒.X模型!
点此下载
201003182308011327.rar

2、解压加入到Content里!


天空是必不可少的.
所以说,一种傻瓜实现方法

1、下载大地无敌做好拆好UV的天空盒.X模型!
点此下载
201003182308011327.rar

2、解压加入到Content里!

3、写代码把它画出来!
model变量请读入Skybox.X模型
texture是你画的贴图~当然也可以用大地无敌画的sky1.png!

Model model;
Texture2D texture;

在Draw函数这样写!


                GraphicsDevice.RenderState.DepthBufferEnable = false;//禁用深度测试,避免挡住后面的物体!
                GraphicsDevice.RenderState.DepthBufferWriteEnable = false;

                Matrix[] skytransforms = new Matrix[model.Bones.Count];
                model.CopyAbsoluteBoneTransformsTo(skytransforms);

                foreach (ModelMesh mesh in model.Meshes)
                {
                    // This is where the mesh orientation is set, as well as our camera and projection.
                    foreach (BasicEffect effect in mesh.Effects)
                    {
                        effect.TextureEnabled = true;
                     
                        effect.Texture = texture;
                      
                        effect.AmbientLightColor = new Vector3(1, 1, 1);//仅开启环境光
                        effect.World = skytransforms[mesh.ParentBone.Index]
                            * Matrix.CreateScale(2000.0f)
                            * rotationMatrix
                            * Matrix.CreateTranslation(赋予相机位置);
                        effect.View = 赋予相机的观察矩阵;
                        effect.Projection = 赋予相机的投影矩阵;
                    }
                    // Draw the mesh, using the effects set above.
                    mesh.Draw();
                }

                GraphicsDevice.RenderState.DepthBufferEnable = true;
                GraphicsDevice.RenderState.DepthBufferWriteEnable = true;

要自己画贴图,这里有天空盒模型的UV图,在框框里画就可以了!

只用单幅贴图,貌似贴图空间浪费比较大,但使用一个贴图很好绘画!,不容易画得衔接不上!

效果图

XNA C# 得到球内随机一点

经过总结,在立方体中取随机点再剔除是最快的方法,所以,找到球内的随机一点,只需如此如此:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;

经过总结,在立方体中取随机点再剔除是最快的方法,所以,找到球内的随机一点,只需如此如此:

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;

namespace GameHelpers
{
    public class GameHelper
    {
        public static Random Random = new Random();
        public static float RandomNext(float min, float max)
        {
            return (min + (float)((max - min) * Random.NextDouble()));
        }
        /// <summary>
        /// 得到球状区域内的随机一点
        /// </summary>
        /// <param name="center">球心</param>
        /// <param name="radius">半径</param>
        /// <returns>结果</returns>
        public static Vector3 RandomPointInBall(Vector3 center, float radius)
        {
            Vector3 a;
            do
            {
                a = new Vector3(RandomNext(-radius, radius), RandomNext(-radius, radius), RandomNext(-radius, radius));

            } while (Vector3.Distance(a, Vector3.Zero) > radius);//直到随机出的点在球内..
            return a + center;
        }
}

命运艺术的粒子系统

命运艺术的粒子系统大概就是这样的:ParticleGroup表示一个由很多相同粒子组成的粒子组,ParticleEffect包含ParticleGroup的群集,表示很多个粒子组组成的一个粒子效果(例:烟雾粒子组+火焰粒子组==火焰效果),DModel存放一个有相对位置缩放等参数的模型,AODModel就是一个复合的模型,包含了很多ParticleEffect和DModel

以前一直使用自己编的粒子效果,但最近发现只要单位很多就会卡..这是因为粒子的更新计算全部由CPU来完成。于是大地无敌只好将微软关于XML粒子效果的StarterKit直接修改将ParticleGroup替换拿来用了,之前大地无敌一直没有看过这个粒子效果的例子,但是移植时惊奇地发现它的思路和大地无敌编写粒子效果时的思路是大体相同的。但因为很多细节不同,所以现有的记录ParticleGroup的XML文件都要重新写……痛苦呀~~

命运艺术的粒子系统大概就是这样的:ParticleGroup表示一个由很多相同粒子组成的粒子组,ParticleEffect包含ParticleGroup的群集,表示很多个粒子组组成的一个粒子效果(例:烟雾粒子组+火焰粒子组==火焰效果),DModel存放一个有相对位置缩放等参数的模型,AODModel就是一个复合的模型,包含了很多ParticleEffect和DModel

以前一直使用自己编的粒子效果,但最近发现只要单位很多就会卡..这是因为粒子的更新计算全部由CPU来完成。于是大地无敌只好将微软关于XML粒子效果的StarterKit直接修改将ParticleGroup替换拿来用了,之前大地无敌一直没有看过这个粒子效果的例子,但是移植时惊奇地发现它的思路和大地无敌编写粒子效果时的思路是大体相同的。但因为很多细节不同,所以现有的记录ParticleGroup的XML文件都要重新写……痛苦呀~~

XNA 使用XML读取自定义类型

最近很忙,仍然在赶工Art of Destiny

OK,根据大地无敌的心得,大地无敌就来介绍如何在XNA中使用内容管道读取XML自定义类型数据了
就让大地无敌来做一个示例解决方案来讲解吧!
大地无敌要使用XML文件来记录一种游戏内的角色(比如一位主角、一种相同的会出现多次的敌人之类的)

 

最近很忙,仍然在赶工Art of Destiny

OK,根据大地无敌的心得,大地无敌就来介绍如何在XNA中使用内容管道读取XML自定义类型数据了
就让大地无敌来做一个示例解决方案来讲解吧!
大地无敌要使用XML文件来记录一种游戏内的角色(比如一位主角、一种相同的会出现多次的敌人之类的)

 

1、新建一个Game主程序项目,名字就叫LandGame好了。

2、新建一个Library项目如图,叫做LandLibrary,在主程序和主程序的Content下都添加对LandLibrary的引用

3、在LandLibrary下新建一个类叫CharacterType用来表示一种游戏角色类别,这就是我们要用内容管道读取的对象,定义几个公有字段如图。

4、在LandLibrary下新建一个类叫Character,除了拥有和CharacterType对应的字段外,还有几个自身的字段,这就是实际游戏中看到的游戏角色了!构造函数传入一个CharacterType表示新建的角色属于的角色类型,如图。

 

5*、在LandLibrary下新建一个ContentTypeReader,用来从数据流中读取数据并存入到一个CharacterType中。(请先把下面耐心看完再操作否则你会后悔,嘻嘻嘻嘻)

6*、在LandLibrary下新建一个ContentTypeWriter,用来向数据流中写入数据。

7、GOOD,现在可以编写一个XML文件放入主程序的Content里,然后在主程序中使用game.Content.Load<CharacterType>("你的XML文件的Asset Name")来从XML中读取角色类型,并使用这个读取的类型作为参数创建新角色(Character)了!但是要注意,XML文件中字段的顺序要与CharacterType中字段的顺序一致,一个实例如图。嘻嘻嘻嘻……在这里告诉大家一个不幸的消息,第5步和第6步是可做可不做的,因为XNA3.1很强大啦……

8、运行结果

范例下载: 200906232306453762.rar

 

 

 

最近有点忙

        啊呀呀,又要期末考试了,地理和历史还要会考,大地无敌虽然不复习也能考得好,但复习了可以考的更好。无敌密码生成器直接被放逐(发到华军和天空上去了都),源码等等再公开好了

        Art of Destiny ,10月之后可以很基本地完成(就是很基本很基本地完成,效果没有那么震撼滴)本可以考虑拿去参加中小学生电脑制作比赛的程序设计(不知道会不会把评委吓到),过半年改出英文XBOX360版可以考虑去参加微软的Dreambuild-Play(XNA游戏制作比赛),总之最近就很忙它了。

        啊呀呀,又要期末考试了,地理和历史还要会考,大地无敌虽然不复习也能考得好,但复习了可以考的更好。无敌密码生成器直接被放逐(发到华军和天空上去了都),源码等等再公开好了

        Art of Destiny ,10月之后可以很基本地完成(就是很基本很基本地完成,效果没有那么震撼滴)本可以考虑拿去参加中小学生电脑制作比赛的程序设计(不知道会不会把评委吓到),过半年改出英文XBOX360版可以考虑去参加微软的Dreambuild-Play(XNA游戏制作比赛),总之最近就很忙它了。

        另外,明天大地无敌会放出在XNA中使用XML的文章。就这样了

        :)

好吧,既然XNA3.1发布了

居然大地无敌过了两天才看到

可是……

然而……

那么大地无敌就全副武装开始下载啦!

 

下载:http://creators.xna.com/en-us/news/xnagamestudio3.1

详细:http://xna.omgsoft.com.cn/news/XNA31isavailable.aspx

居然大地无敌过了两天才看到

可是……

然而……

那么大地无敌就全副武装开始下载啦!

 

下载:http://creators.xna.com/en-us/news/xnagamestudio3.1

详细:http://xna.omgsoft.com.cn/news/XNA31isavailable.aspx

 

粒子效果增强中……

很好,大地无敌正在改进粒子效果让它更加强大……

这里有关于粒子效果的实例,大地无敌研究了很久……

xna.omgsoft.com.cn/education/particle3d.aspx

很好,大地无敌正在改进粒子效果让它更加强大……

这里有关于粒子效果的实例,大地无敌研究了很久……

xna.omgsoft.com.cn/education/particle3d.aspx

微软MSDN关于XNA的帮助文档的地址

        MSDN上关于XNA帮助文档的链接是http://msdn.microsoft.com/en-us/library/aa139594.aspx,如果本机安装了XNA和MSDN可以直接打开MSDN查看:)
        大地无敌很久以前选出来的那几篇文章也在那里面

        MSDN上关于XNA帮助文档的链接是http://msdn.microsoft.com/en-us/library/aa139594.aspx,如果本机安装了XNA和MSDN可以直接打开MSDN查看:)
        大地无敌很久以前选出来的那几篇文章也在那里面

大地无敌的宏伟计划-游戏列表

大地无敌的游戏制作计划列表

1、2002年-2006年RPG MAKER 破碎大地系列:已无限期推迟 查看:半成品(《破碎大地》BY RPG Maker 2003 《破碎大地2》BY RPG Maker XP)
2、2003年-2008年魔兽争霸地图:已完结 查看:http://www.gquit.cn/catalog.asp?cate=1

 

大地无敌的游戏制作计划列表

1、2002年-2006年RPG MAKER 破碎大地系列:已无限期推迟 查看:半成品(《破碎大地》BY RPG Maker 2003 《破碎大地2》BY RPG Maker XP)
2、2003年-2008年魔兽争霸地图:已完结 查看:http://www.gquit.cn/catalog.asp?cate=1
3、2009年-2010年上半年:大地无敌的XNA入手游戏,3D空间飞船乱斗——《命运艺术》 :施工中
4、2010年-2013年:大地无敌的第一个正式作品,类鬼泣神秘动作游戏,大地无敌已经写好了一个完整的宏大的世界观,将参加2012年或2013年微软XNA Dream-Build-Play。:队列中 (2011年大地无敌要高考,怨念啊,耽误许多时间)
5、2013年-2015年:大地无敌将会制作上面那个游戏的续集和另一款吸收了《战争地带2100》优点的即时战略游戏。:队列中
6、2015年- ? :大地无敌或许应该将会成为设计出很多很好很出名游戏的游戏设计师……:队列中
这就是大地无敌的规划了,朝着目标奋斗吧,大地!
 

 

 

由于大地无敌已经黑化所以以上全部丢弃。新的计划不告诉你们>_<2012/8/21