Снаряды / Пули направление Cocos2d - PullRequest
4 голосов
/ 16 декабря 2011

Я изучаю простую игру cocos2d .

однако в этом уроке пули, которые запускает пользователь, только в одном направлении

что я могу сделать, чтобы огонь был со всех сторон, а не односторонним?

вот код направления.

int offX = location.x - projectile.position.x;
int offY = location.y - projectile.position.y;

[self addChild:projectile];

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);

int offRealX = realX - projectile.position.x;
int offRealY = realY - projectile.position.y;
float length = sqrtf((offRealX*offRealX)+(offRealY*offRealY));
float velocity = 480/1;
float realMoveDuration = length/velocity;

[projectile runAction:[Sequence actions:[MoveTo actionWithDuration:realMoveDuration position:realDest],
                       [CallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)], nil]];

вся помощь будет принята с благодарностью. Спасибо

1 Ответ

4 голосов
/ 10 января 2012

Предполагая, что вы создаете снаряд на месте вашего персонажа, вам просто нужно выяснить направление перед вычислением конечной точки.

После добавления снаряда:

[self addChild:projectile];

Добавьте скалярное число с плавающей точкой:

float scalarX = 1.0f;

и сделайте его отрицательным, если от символа осталось касание:

if (offX < 0.0f) scalar = -1.0f;

Затем просто умножьте realX на этот скаляр, чтобы сделать его точнымправильный путь

int realX = scalar * (winSize.width + (projectile.contentSize.width/2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...