// 抛物线
//mSprite:需要做抛物线的精灵
//startPoint:起始位置
//endPoint:中止位置
//dirTime:起始位置到中止位置的所需时间
- (void) moveWithParabola:(CCSprite*)mSprite startP:(CGPoint)startPoint endP:(CGPoint)endPoint dirTime:(float)time{
float sx = startPoint.x;
float sy = startPoint.y;
float ex =endPoint.x+50;
float ey =endPoint.y+150;
int h = [mSprite contentSize].height*0.5;
ccBezierConfig bezier; // 创建贝塞尔曲线
bezier.controlPoint_1 = ccp(sx, sy); // 起始点
bezier.controlPoint_2 = ccp(sx+(ex-sx)*0.5, sy+(ey-sy)*0.5+200); //控制点
bezier.endPosition = ccp(endPoint.x-30, endPoint.y+h); // 结束位置
CCBezierTo *actionMove = [CCBezierToactionWithDuration:time bezier:bezier];
[mSprite runAction:actionMove];
}
// 抛物线运动并同时旋转
//mSprite:需要做抛物线的精灵
//startPoint:起始位置
//endPoint:中止位置
//startA:起始角度
//endA:中止角度
//dirTime:起始位置到中止位置的所需时间
- (void) moveWithParabola:(CCSprite*)mSprite startP:(CGPoint)startPoint endP:(CGPoint)endPoint startA:(float)startAngle endA:(float)endAngle dirTime:(float)time{
float sx = startPoint.x;
float sy = startPoint.y;
float ex =endPoint.x+50;
float ey =endPoint.y+150;
int h = [mSprite contentSize].height*0.5;
//设置精灵的起始角度
mSprite.rotation=startAngle;
ccBezierConfig bezier; // 创建贝塞尔曲线
bezier.controlPoint_1 = ccp(sx, sy); // 起始点
bezier.controlPoint_2 = ccp(sx+(ex-sx)*0.5, sy+(ey-sy)*0.5+200); //控制点
bezier.endPosition = ccp(endPoint.x-30, endPoint.y+h); // 结束位置
CCBezierTo *actionMove = [CCBezierToactionWithDuration:time bezier:bezier];
//创建精灵旋转的动作
CCRotateTo *actionRotate =[CCRotateToactionWithDuration:time angle:endAngle];
//将两个动作封装成一个同时播放进行的动作
CCAction * action = [CCSpawn actions:actionMove, actionRotate, nil];
[mSprite runAction:action];
}