eric.mitchell
eric.mitchell

Reputation: 8845

iOS Cocos2d Sprite movement problem

int realX = winSize.width + (projectile.contentSize.width/2);
float ratio = (float) offY / (float) offX;
int realY = (realX * ratio) + projectile.position.y;
CGPoint realDest = ccp(realX, realY);
[_projectiles addObject:projectile];
projectile.tag = 2;


[projectile runAction:[CCSequence actions:
                       [CCMoveTo actionWithDuration:realMoveDuration position:realDest],
                       [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)],
                       nil]];

In this simple app, I am trying to make a projectile flying from the middle of the screen to wherever the user touches, and beyond, to the edge of the screen. For whatever reason, the projectile will only fly to destinations with positive x coordinates, no matter when the user presses. If you imagine an x y plane, with the center of the screen being origin, the projectile will only fly to places on in the quadrants to the right of origin. If the user touches a point on the left two, the projectile flies in the opposite direction, on the same slope as the ratio of the touch to origin. .... .........? Any ideas, thanks in advance

Upvotes: 0

Views: 313

Answers (1)

Alexander
Alexander

Reputation: 8147

You must consider the signs of the X and Y coordinates when you are calculating the ratio. That's the origin of your problem.

Carthesian coordinate system with coordinate signs.

Upvotes: 2

Related Questions