0

@Anton私はこのフリッピングを立ち往生させました。

ここからプロジェクトをダウンロードしました。ボタンごとに 4 つのボタンがあり、タイトルを右、左、下、上に 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 に答える