ccDrawLine在错误的坐标处绘制线条

时间:2011-04-28 11:13:12

标签: iphone objective-c cocos2d-iphone

我正在使用cocos2d 0.99.5编写iphone应用程序, 我有这个自定义类:

@interface Head : CCSprite <CCTargetedTouchDelegate>

我在这个类'draw方法中画了一行,如下所示:

-(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以外的不同点绘制线条。我想这些点需要转换为某些东西,但不知道是什么&amp;怎么样。

如果我手动指定相同的点,则会在适当的坐标处绘制线条。

这里缺少什么?

2 个答案:

答案 0 :(得分:0)

您在绘制函数中绘制的所有内容都与节点的位置相关(在本例中为Head的位置)。因此,在设置p1之后但在设置p2之前更改位置时,结果是意外的。如果您尝试使用手动点,则仅当位置为(0,0)时才会正确绘制线条。

答案 1 :(得分:0)

尝试将它们转换为世界空间:

CGPoint p1World = [self convertToWorldSpace:p1];

CGPoint p2World = [self convertToWorldSpace:p2];