我已经设法能够在OpenGL中翻转精灵:
// ox is origin x, w is width, flip is whether the sprite should flipped
if (flip) {
x += (w+ox);
}
x += ox;
y += oy;
glBegin(GL_QUADS);
//bottom right
glTexCoord2f(0, 0); glVertex2f(x, y);
//top right
glTexCoord2f(1, 0); glVertex2f(flip ? x - w : x + w, y);
//top left
glTexCoord2f(1, 1); glVertex2f(flip ? x - w : x + w, y + h);
//bottom left
glTexCoord2f(0, 1); glVertex2f(x, y + h);
glEnd();
glDisable(GL_TEXTURE_2D);
它有效,但根据它们的来源翻转精灵有问题。精灵在正x方向(不翻转)时面貌显示正常。但是一旦我翻转它,所有的精灵位置(我使用精灵的动画)都不会像没有翻转那样对齐。我试图做的就是字面意思,只需将原点翻转就恰到好处。如果你没理解我的意思......
https://www.youtube.com/watch?v=OY8rZEyjR4s(行动中的问题视频)
此时我已经尝试过这么多随机数学,我不知道下一步该尝试什么,当然我尝试了基本的东西,比如x += flip ? -ox : ox;
,我搞砸了x += (w+ox);
行太
我添加这个是因为有人在评论中提出这个问题,这就是我的意思:
例如,我会在精灵上执行setOrigin(-1,2),它会在x轴上移动-1像素(如果没有翻转,则移动1个像素),在y轴上移动2个像素(向下移动2个像素)< / p>