ccDrawLine рисует линию в неправильных координатах - PullRequest
0 голосов
/ 28 апреля 2011

Я пишу приложение для iphone, используя cocos2d 0.99.5, у меня есть этот пользовательский класс:

@interface Head : CCSprite <CCTargetedTouchDelegate>

Я рисую линию в методе рисования этого класса следующим образом:

-(void) draw {
   [super draw];
   glEnable(GL_LINE_SMOOTH);        
   glColor4f(0.8, 1.0, 0.76, 1.0);
   ccDrawLine(p1, p2);
}   

p1, p2 рассчитываются так:

CGPoint p1 = CGPointMake(self.position.x, self.position.y);
.......
//change the position 
.......
CGPoint p2 = ccp(self.position.x, self.position.y);

Теперь проблема в том, что линия рисуется в других точках, отличных от p1, p2.Я думаю, что точки должны быть преобразованы во что-то, но не знаю, что и как.

Если я укажу те же точки вручную, линия будет нарисована в правильных координатах.

Чего здесь не хватает ??

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Попробуйте преобразовать их в мировое пространство:

CGPoint p1World = [self convertToWorldSpace:p1];

CGPoint p2World = [self convertToWorldSpace:p2];
0 голосов
/ 29 апреля 2011

Все, что вы рисуете в функции рисования, относится к положению узла (в данном случае это положение головы). Поэтому, когда вы меняете положение после установки p1, но до настройки p2, результат неожиданный. Если вы попробуете с ручными точками, линия рисуется правильно только тогда, когда позиция равна (0,0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...