Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

3D perspective view in iphone game using cocos2d

I am developing 'Paper Toss' for iphone using cocos2d & I would like to know that how to implement 3D perspective view into this,because while we are throwing the paper ball to the bin,we have to get the 3D feel.I'am attaching the code which i have done,using this i have got a straight line motion.Please help me..

*- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

// Choose one of the touches to work with
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];

// Set up initial location of projectile
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite *projectile = [CCSprite spriteWithFile:@"ball.png" 
                                           rect:CGRectMake(0, 0, 40, 40)];
projectile.position = ccp(winSize.width/2,20);

// Determine offset of location to projectile
int offX = location.x - projectile.position.x;
int offY = location.y - projectile.position.y;

// Bail out if we are shooting down or backwards
if (offY <= 0) return;

// Ok to add now - we've double checked position
[self addChild:projectile];

// Determine where we wish to shoot the projectile to
int realY = winSize.height + (projectile.contentSize.width/2);
float ratio = (float) offX / (float) offY;
int realX = (realY * ratio) + projectile.position.x;
CGPoint realDest = ccp(realX, realY);

// Determine the length of how far we're shooting
int offRealX = realX + projectile.position.x;
int offRealY = realY + projectile.position.y;
float length = sqrtf((offRealX*offRealX)+(offRealY*offRealY));
float velocity = 480/1; // 480pixels/1sec
float realMoveDuration = length/velocity;

// Move projectile to actual endpoint
[projectile runAction:[CCSequence actions:
                       [CCMoveTo actionWithDuration:realMoveDuration position:realDest],
                       [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)],
                       nil]];
//add to the projectiles array
projectile.tag = 2;
[_projectiles addObject:projectile];

}*

like image 863
Tony Jose Avatar asked Mar 26 '12 12:03

Tony Jose


2 Answers

Finally I have completed paper toss using cocos2d.I implemented bezier curve and here it is,

  // Bezier curve control points
  bezier.controlPoint_1 = ccp(location.x-CONTROL_POINT1_X, CONTROL_POINT1_Y);
  bezier.controlPoint_2 = ccp(location.x-CONTROL_POINT2_X, CONTROL_POINT2_Y);
  bezier.endPosition = ccp(location.x-CONTROL_POINT1_X,distance);

  // Motion along bezier curve and finally call a function
  [projectile runAction:[CCSequence actions:
                           [CCAutoBezier actionWithDuration:DEFAULT_ACTION_DURATION bezier:bezier],
                           [CCCallFuncN actionWithTarget:self selector:@selector(collisionCheck:)], nil]];
like image 113
Tony Jose Avatar answered Nov 15 '22 11:11

Tony Jose


Just scale your sprite image so it gets smaller the "further away" it is.

like image 38
Nick Bull Avatar answered Nov 15 '22 10:11

Nick Bull