XNA开发思考之(1)tank的移动
此为原创,转载请注明作者和出处,谢谢!
下面我们就对tank这程序值得思考之处作出评解:
先附加视频位置: http://v.youku.com/v_show/id_XOTkxODcwMDQ=.html
首先这个程序是基于2D开发,所以平面坐标只有X,Y轴!
假设tank已经在如图所位置,下一步将移动到A点,假设tank的旋转弧度为tank_rotation,因为程序中的数学角度的换算是以弧度的,所以float tank_rotation;如果将tank到A点的距离设为单位1,这利用Math.Cos(tank_rotation)-tankposition.X(tankposition为tank当前的位置)可以算出tank在X轴上的下一个位置的X坐标,Math.Sin(tank_rotation)-tankposition.Y可以得出下一个点Y轴的坐标.如果你想让tank移动的快点,可以在把单位1改为任意的数字,来增大移动的距离!
在游戏中,tank的旋转的实现也是通过弧度tank_rotation实现的。XNA把一个圆圈分成了360个部分,每一个被称为一度。那么90度则是四分之一个圆,180度是半个圆。如果不习惯用弧度来表示角度的话可以运用MathHelper.ToRadians将弧度转化为角度进行运算。
tank旋转运动的绘制需要在Draw()方法循环中用到
这里的SpriteBatch.Draw,并通过调整位置、大小、旋转、翻转、调色,以及更多的丰富多彩的选项来绘制Texture2D对象到屏幕上
付上程序的源代码:/Files/315358525/Tanke.rar