如果要看物理的話:Cocos2D & Box2D
基本上一般的拋物線不使用『重力加速度』,且知道目的地位置可以套用此方式。
我使用的是以下的寫法:
先宣告一個角度+速度值,負值為下:
float Speed;
在touch或是任個按鈕事件中內寫上:
Speed = ccpAngle(物件位置, 現在拉的位置);
id CallFormula = [CCCallFuncO actionWithTarget:self selector:@selector(FightRootFormula:) object:MyWeapon];
id Delays = [CCDelayTime actionWithDuration:0.05];
id ExcSequence = [CCSequence actions:[CCRepeat actionWithAction:[CCSequence actionOne:CallFormula two:Delays] times:50];
[MyWeapon runAction:ExcSequence,[CCHide action], nil]];
然後在同個程式檔案內寫上此function:
-(void)FightRootFormula:(CCSprite*)mSprite{
#define V 20
#define G 1
Speed += G;
mSprite.position = ccp(mSprite.position.x + V,mSprite.position.y-Speed); //往右丟。
[mSprite setRotation:Speed*某個值];
BOOL HIT_ENEMY = NO;
if (CGRectContainsPoint([敵人 boundingBox], mSprite.position)){//(CGRectContainsRect([mSprite boundingBox], [敵人 boundingBox])){
NSLog(@"打到敵人");
HIT_ENEMY = YES;
}
if (mSprite.position.y < LEND || mSprite.position.y > 320 || mSprite.position.x > 480 || HIT_ENEMY){
[mSprite stopAllActions];
}
}
沒有留言:
張貼留言
歡迎大家留言提問,我會答的都會盡力回答!
如果太久沒出現回應就是我又忘記回來看留言了TAT