Отодвинуть спрайт от Touch? Cocos2d - PullRequest
1 голос
/ 21 февраля 2011

Привет всем, я новичок в cocos2d и Objective-C, поэтому я прошу прощения, если есть простое решение.Я работаю над кодом для игры, которую разрабатываю.В этой игре у меня есть спрайт на экране, и я бы хотел, чтобы этот спрайт перемещался напротив места касания.

Пример: Пример изображения

Пока мой кодвыглядит следующим образом:

-(void) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
//Determine location of the tap/touch
CGPoint touchLocation = [touch locationInView: [touch view]];
touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
touchLocation = [self convertToNodeSpace:touchLocation];

Я добавляю свой спрайт в сцену в методе init следующим образом:

        CGSize screenSize = [[CCDirector sharedDirector] winSize];

    Ball* ball = [Ball ball];
    ball.position = CGPointMake(ball.contentSize.width / 2, screenSize.height / 2);
    [self addChild:ball z:2];

Мне бы хотелось, чтобы при касании экранаспрайт переместится на 20 пикселей напротив этого места касания.Так что, если я коснусь слева от спрайта, спрайт переместится вправо, если я коснусь к вершине, спрайт переместится вниз ... и т. Д.

Спасибо за помощь!

1 Ответ

1 голос
/ 22 февраля 2011

Используйте действия. На ощупь начал метод создания действия:

CGPoint vector;
vector.x = ball.position.x - touchLocation.x;
vector.y = ball.position.y - touchLocation.y;

float vectorLength = sqrt(vector.x*vector.x + vector.y*vector.y);
if (fabs(vectorLength) < 0.1) return; //tapped directly to the center of sprite

vector.x *= 20 / vectorLength;
vector.y *= 20 / vectorLength;

id action = [CCMoveBy actionWithDuration: 0.5 position: vector];
[ball runAction: action];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...