0

@Anton 我坚持这个翻转。

我从这里下载了项目。我有四个按钮,每个按钮将标题设置为 str 变量的右、左、下、顶。

在渲染初始旋转轴是 teapotNode_.rotationAxis = CC3VectorMake(0.1, 1, 0.3);

- (void)update:(float)dt
{

    if ([str isEqualToString:@"right"])
    {

        teapotNode_.rotationAxis = CC3VectorMake(0.1, 1, 0.3);
        angle +=2.0;
    }
    else if ([str isEqualToString:@"left"])
    {

        teapotNode_.rotationAxis = CC3VectorMake(0.1, 1, 0.3);
        angle -=2.0;
    }
    else if ([str isEqualToString:@"bottom"])
    { 

        teapotNode_.rotationAxis = CC3VectorMake(1,0,0);
        angle +=2.0;

    }
    else if ([str isEqualToString:@"top"])
    {

        teapotNode_.rotationAxis = CC3VectorMake(1,0,0);
        angle -=2.0;

    }   
    else{

        angle +=2.0;
    }    
    teapotNode_.rotationAngle = angle;

}

我触摸顶部(或)向下旋转按钮更改轴,如 teapotNode_.rotationAxis = CC3VectorMake(1,0,0); 对象翻转。

我想要相同的轴位置将对象从上到下和从下到上旋转。

4

1 回答 1

1

解决方案是:

您自己将旋转轴值称为 (0.1,1,0.3) 初始值。所以不要改变那个值。

该项目本身具有单独的旋转功能。那是teapotNode_.rotation

像这样使用。它对我来说工作正常。尝试这个。

全球宣布:

float x=0.0;
float y=0.0;
float z=0.0;
float angle;
float rangle=2.0;
float xangle;
float yangle;


- (void)update:(float)dt
{

    if ([str isEqualToString:@"right"])
    {
        x=0;    y=1;  z=0;              //ROTATE OBJECT IN Y-AXIS(Y=1 & X=0)
        yAngle+=rAngle;                 //GET ANGLE OF OBJECT ROTATION IN Y-AXIS (ANTI CLOCKWISE)
        angle +=rAngle;                 //INCREMENT ANGLE OF OBJECT ROTATION IN ANTICLOCLWISE
    }
    else if ([str isEqualToString:@"left"])
    {
        x=0;    y=1;  z=0;              //ROTATE OBJECT IN Y-AXIS(Y=1 & X=0)
        yAngle-=rAngle;                 //GET ANGLE OF OBJECT ROTATION IN Y-AXIS (CLOCLWISE)
        angle -= rAngle;                //INC ANGLE OF OBJECT ROTATION IN CLOCKWISE

    }
    else if ([str isEqualToString:@"bottom"])
    {
        x=1;    y=0;  z=0;              //ROTATE OBJECT IN X-AXIS(X=1 & Y=0)
        xAngle+=rAngle;                 //GET ANGLE OF OBJECT ROTATION IN X-AXIS (ANTI CLOCKWISE)
        angle += rAngle;                //INC ANGLE OF OBJECT ROTATION

    }
    else if ([str isEqualToString:@"top"])
    {
        x=1;    y=0;  z=0 ;              //ROTATE OBJECT IN Y-AXIS(X=1 & Y=0)
        xAngle-=rAngle;                 //GET ANGLE OF OBJECT ROTATION IN X-AXIS (CLOCLWISE)
        angle -= rAngle;                //INC ANGLE OF OBJECT ROTATION


    }

    else
    {
        angle +=rAngle;
    }
//    teapotNode_.rotationAxis = CC3VectorMake(x, y, z);
//    teapotNode_.rotationAngle = angle;
    teapotNode_.rotation = CC3VectorMake(xAngle, yAngle, 0);

}
于 2013-08-27T08:11:17.593 回答