cocos2d-xna 写的一个小游戏demo坦克大战
最近看到网上介绍cocos2d的资料很多,看了看cocos2d也支持wp7,下载了个 Cocos2d-XNA 安装包,写个小例子玩玩,熟悉下cocos2d
程序很简单,就一个入门级的小游戏,写完后放手机里运行了下效果还可以
开发环境 vs2010,windows phone sdk 7.1
实现方法如下
1.创建好 CCLayer 的子类
2.重写 onEnter 方法添加一些基本按钮 跟一些初始化代码
3.通过schedule方法 控制 坦克 子弹的CCSprite对象
4.根据点击手机屏幕,确定出坦克的方向,根据坦克的方向修改坦克的X,Y轴坐标,来实现坦克的移动
5.通过CCRect的CCRectIntersetsRect函数来进行碰撞检测,实现子弹打击坦克
6.代码完成后 安装zune后 就能把游戏部署到手机里面了 部署前手机要绑定开发者帐号或者学生帐号
具体实现代码
1.在项目里面添加枚举类型
/// <summary>
/// 表示方向的的枚举类型
/// </summary>
public enum Direction { L, U, D, R, STOP }
2.添加子弹类的相关常量,属性
/// <summary>
/// 子弹X轴的速度,单位PX
/// </summary>
public static int XSPEED = 10;
/// <summary>
/// 子弹Y轴的速度,单位PX
/// </summary>
public static int YSPEED = 10;
/// <summary>
/// 子弹的宽度
/// </summary>
public static int WIDTH = 15;
/// <summary>
/// 子弹的高度
/// </summary>
public static int HEIGHT = 15;
/// <summary>
/// 子弹的坐标
/// </summary>
int x, y;
/// <summary>
/// 子弹的方向
/// </summary>
Direction dir;
/// <summary>
/// 子弹的存活状态
/// </summary>
private bool live = true;
/// <summary>
/// TankClient窗体实例
/// </summary>
private TankClient tankClient;
/// <summary>
/// 敌我双方的标记
/// </summary>
private bool good;
CCSprite m_missile;
3.添加draw方法来画出子弹
public void Draw()
{
if (!live)
{
tankClient.removeChild(m_missile, true);
tankClient.missiles.Remove(this);
return;
}
m_missile.position = new CCPoint(x, y);
Move();
}
4.添加子弹打击坦克的方法
public bool HitTank(Tank t)
{
//用IntersectsWith来检测两个矩形相碰撞
//if (GetRectangle().IntersectsWith((t.GetRectangle())) && t.Live && this.live && this.good != t.Good)
if (CCRect.CCRectIntersetsRect(GetRectangle(), t.GetRectangle()) && t.Live && this.live && this.good != t.Good)
{
t.Live = false;
this.live = false;
return true;
}
return false;
}
5.添加坦克类相关属性,常量
/// <summary>
/// 坦克x轴的速度
/// </summary>
public static int XSPEED = 5;
/// <summary>
/// 坦克y轴的速度
/// </summary>
public static int YSPEED = 5;
/// <summary>
/// 坦克的宽度
/// </summary>
public static int WIDTH = 58;
/// <summary>
/// 坦克的高度
/// </summary>
public static int HEIGHT = 58;
/// <summary>
/// 坦克的坐标
/// </summary>
private int x, y;
/// <summary>
/// 标记上下左右键是否按下
/// </summary>
private bool l = false, u = false, r = false, d = false;
/// <summary>
/// 坦克的方向
/// </summary>
private Direction dir = Direction.STOP;
/// <su
补充:移动开发 , 其他 ,