飞机大战:
/*1.创建背景图片(移动)
(1)创建两张背景图片,一个放在(0,-screen.height)(0,0)
(2)开启定时器,按照雪花下落的逻辑,实现背景移动
建议:背景移动的距离,要被屏高整除,两张图片才能无缝连接(不会出现断层,白带)
2.创建自己的战斗机
(1)创建自己的飞机
(2)给飞机做动画(关键帧动画)
(3)手指可以移动飞机
touch事件
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
//找到touch事件
UITouch *touch=[touches anyObject];
//找到点坐标
CGPoint point=[touch locationInView:self.view];
//判断点是否包含在一个frame内
if(CGRectContainsPoint(_myPlane.frame, point)){
_myPlane.center=point;
}
}
touchesCancelled:取消,阻断触屏事件
touchesBegan:按下去不松,响应事件(触屏发射子弹)
touchesEnded :结束触屏时的事件(离开屏幕,停止发射子弹)
touchesMoved:移动时触发的事件(在屏幕滑动,移动飞机)NSSet(UITouch)类型=NSArray类型 (两者区别,一个允许出现重复的元素,一个不允许出现重复的元素)
//找到Touch事件
UITouch *touch=[touch anyObject];
//找到点的坐标
CGPoint point=[touch locationInView:self.view];//飞机坐标是相对view来说的,所以写self.view
//更改飞机(中心 )坐标
//判断点击的点 是不是在飞机上面
if(CGRectContainsPoint(_myPlane,point)){
_myplane.center=point;
}
3.创建敌机
(1)创建一个数组(用来装有限个敌机)
(2)创建一个敌机做动画(敌机爆炸的动画(关键帧动画),为下面做准备)
(3)写一个for循环,把第二步粘贴进来,敌机装进数组
(4)开启两个定时器,一个用来找,一个用来移动
(5)实现两个定时器的逻辑
4.创建子弹
(1)创建一个数组(用来装有限个子弹)
(2)创建一个子弹
(3)创建一个for循环,把第二步粘贴过来,子弹装进数组
(4)开启两个定时器,一个用来找,一个用来移动(可以和敌机定时器共用)
(5)是定时器的方法中,实现找和移动的逻辑
可以添加一个数值计算的取余判断,通过过滤数字控制频率
5.检测碰撞
6.清屏
(1)子弹和敌机碰撞
屏幕中的子弹和屏幕中的敌机才能发生碰撞
(2)CGRectContainsRect(zidan.frame,diji.frame)
//延时加载方法 (1.延时方法 2.传递参数 3.延时时长)
[self perfoimSelector:@selector(refreshScreen) withObject: digi afterDelay:5];
-(void)refreshScreen
*/ |
|