Game
文章平均质量分 65
oeg2006
这个作者很懒,什么都没留下…
展开
-
XNA学习笔记——顶点缓存和索引缓存
从教程上看,XNA一开始没有使用顶点缓存,不像D3D,一开始用的就是VertexBuffer。不过网上也有人说,D3D也可以不用VertexBuffer,有待学习。在XNA中如果不用VertexBuffer,就如上一个笔记中直接定义顶点,如VertexPositionColor,最后用GraphicsDevice的DrawUserPrimitive方法进行绘制。但是可以使用索引数组(还没到索引原创 2010-03-18 12:52:00 · 1395 阅读 · 2 评论 -
XNA学习笔记——相机设置
相机这部分比想象当中要难缠。现在也不是特别清楚,只是根据教程XNARecipes中第二章的2、3两节做一些必要的记录。 最简单的例子:相机在初始位置,绕着Up向量相机在(0,0,0)初始坐标,朝(0,0,-1) Forward方向观察,以默认的(0,1,0) Up向量作为向上方向。在这个情况中,可以使用以下代码: 1: Vector3 cameraPosition原创 2010-03-19 17:35:00 · 1221 阅读 · 0 评论 -
XNA学习笔记——Quake式相机
通常,在FPS游戏中,玩家可以自由地上下左右旋转观察,这些运动对应绕Up(y轴)和Right(x轴)的旋转,或更具体地说,绕(0,1,0)和(1,0,0)方向的旋转。但是绕z轴的旋转是不被允许的,这会导致玩家向左或向右弯曲脖子,在第一人称游戏中不使用,除非玩家被击中倒在地板上。矩阵的乘法顺序是很重要的,因为当你组合两个旋转时,第二个旋转轴会被第一个旋转所改变。简单地说,需要存储两个原创 2010-03-19 19:36:00 · 887 阅读 · 0 评论 -
XNA学习笔记——用顶点缓冲和索引缓冲创建地形
1: private float[,] LoadHeightData(Texture2D heightMap) 2: { 3: float minimumHeight = 255; 4: float maximumHeight = 0; 5: 6: int width = heightMap.Width;原创 2010-03-25 15:30:00 · 1073 阅读 · 0 评论 -
XNA学习笔记——Tile Map的碰撞检测
如图所示,ABCD是四个相邻的tile,中间靠左深色矩形是角色矩形原先所处的位置,中间红色矩形是角色移动一定距离后所处的位置(先假设能够移动,相当于反证法),它的右上角和右下角分别是a点和b点,两个椭圆表示该tile中有障碍物存在。现在就讲一下大概的思路。角色能不能移动,就看原创 2010-08-23 12:36:00 · 1511 阅读 · 1 评论 -
XNA学习笔记——SpriteBatch.Draw的layerDepth
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.FrontToBack, SaveStateMode.None); spriteBatch.Draw(pic1, new Vector2(0, 0), null, Color.White, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);原创 2010-09-08 14:01:00 · 1547 阅读 · 1 评论 -
XNA学习笔记——SpriteBatch.Draw的origin参数
<br /> spriteBatch.Draw(pic1, new Vector2(GraphicsDevice.Viewport.Width / 2, GraphicsDevice.Viewport.Height / 2), null, Color.White, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0); spriteBatch.Draw(pic1, new Vec原创 2010-09-08 15:00:00 · 1401 阅读 · 0 评论 -
XNA学习笔记——SpriteBatch.Begin的Matrix参数
<br />spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.FrontToBack,SaveStateMode.None, Matrix.CreateTranslation(new Vector3(10, 10, 0)));spriteBatch.Draw(pic1, new Vector2(0, 0), null, Color.White, 0.0f, Vector2.原创 2010-09-08 13:25:00 · 956 阅读 · 0 评论 -
XNA学习笔记——横版卷轴
<br />不管是side-scrolling(横版卷轴),还是tilemap,有一点是非常关键的,就是不同坐标系之间的变换。在三维中有一个视口变换。二维没有那么复杂,但原理是差不多的。角色和地图上的tile,它们的位置属于地图坐标,地图就是它们所在的世界,所以也可以说是世界坐标。而在窗口屏幕中绘制主角和tile时,是以屏幕坐标为参照系的。在游戏的逻辑中,角色位置的改变,以及碰撞检测仍是以地图坐标(世界坐标)进行的,因此在Draw方法中,必须将角色和tile的地图坐标变换成屏幕坐标,从而在屏幕的适当位置显示原创 2010-09-10 17:37:00 · 1411 阅读 · 0 评论 -
XNA学习笔记——2D屏幕中绘制线条
方法一 1: public void DrawLine(float x0, float y0, float x1, float y1) 2: { 3: float cw = gdm.PreferredBackBufferWidth / 2; 4: float ch = gdm.PreferredBackBufferHeight / 2; 5: effect.Begi原创 2010-08-23 17:43:00 · 1446 阅读 · 0 评论 -
XNA学习笔记——文档翻译1
1、Game Services Game services 是一种机制,这种机制可以在需要进行交互的对象之间维持松散耦合。Services(下面翻译成服务)通过中介,在这里就是Game.Services,进行工作。服务提供者(service providers)通过Game.Services进行注册,服务消费者(service consumers)从Game.Services中请求服务。这种方式允许一个对象在不知道服务提供者的名称时请求服务。 Game services 由一个接口定义。一个类通过实原创 2010-06-11 20:37:00 · 695 阅读 · 0 评论 -
XNA学习笔记——线、三角形的绘制
1: namespace WindowsGame4 2: { 3: public class Game1 : Microsoft.Xna.Framework.Game 4: { 5: GraphicsDeviceManager graphics; 6: SpriteBatch spriteBa原创 2010-03-15 19:46:00 · 1444 阅读 · 0 评论