标签:
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)
前一篇博文介绍了物理对象中小球与砖块的碰撞处理,在这一篇中我们再来看一下小球与反弹棒碰撞发生的那点事 ;)
同样我们在碰撞中也要调整小球的力矩,所以也要分开处理,首先是碰撞开始时的处理:
-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair ball:(CCNode *)ball
stick:(CCNode *)stick{
//一旦小球碰到反弹棒恢复得分比率
_scoreRatio = 1;
return YES;
}
前面我们实现了当小球多次连续碰撞砖块时会增加得分比率,所以这里我们在小球碰撞到反弹棒时,要将得分比率重新复位.这就是他要干的全部工作.其实可以将其放到结束碰撞中去,然后完全去掉开始碰撞的处理.
接下来是碰撞结束的处理:
-(BOOL)ccPhysicsCollisionPreSolve:(CCPhysicsCollisionPair *)pair ball:(CCNode *)ball stick:(CCNode *)stick{
CCPhysicsBody *phyBall = ball.physicsBody;
CGPoint velocity = phyBall.velocity;
NSInteger neg = arc4random_uniform(2);
NSInteger rnd = arc4random_uniform(500);
//当小球碰到反弹棒时,给小球一个随机冲力
if (neg == 0) {
velocity.x += rnd;
}else
velocity.x -= rnd;
[phyBall applyImpulse:ccpMult(velocity, 1.3)];
return YES;
}
方法代码不长,但涉及到一些物理对象的操作,有必要详细说一下:
首先取得小球的物理对象,然后随机生成小球的一个冲力,然后将冲力应用到小球上.That’s all!
我们现在要实现反弹棒的移动功能,在GameScene.m中,添加移动触摸方法:
-(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
//CCLOG(@"touch began from GameScene");
}
-(void)touchMoved:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
CGPoint location = [[CCDirector sharedDirector] convertTouchToGL:touch];
@synchronized(self){
[self.stickInGameScene moveStickTo:location];
}
}
编译运行app,现在游戏效果如下:
好了游戏初步有了一定可玩性,下一篇中我们回到关卡中让它不断生成更多的砖块. 下篇见 ;)
(NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
标签:
原文地址:http://blog.csdn.net/mydo/article/details/50094265