だから私はObj-CでCocos3Dを使用しています。
私の最初の質問は答えを得るのに十分明確ではないようですので、私はそれをもう一度書きます。
3Dビューアを作成しています。これを使用して、画面上で指をドラッグして、object(Dobj
)を回転させたいと考えています。
-(void) startRotatingObjectOnXYAxis { saveXYAxisStartLocation = Dobj.rotation; }
-(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement
{
CC3Vector rotateVector = CC3VectorMake(aMovement.y, aMovement.x, 0.0f);
Dobj.rotation = CC3VectorAdd(saveXYAxisStartLocation, rotateVector);
}
問題は、このようにすると、オブジェクトの軸も回転し、その後ドラッグすると、X軸が(水平ではなく)垂直になり、回転が非常に混乱することです。
したがって、ドラッグするたびに軸を原点にリセットしたいと思います。
そんな感じ:
-(void) startRotatingObjectOnXYAxis { saveXYAxisStartLocation = Dobj.rotation; }
-(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement
{
[Dobj moveMeshOriginTo:CC3VectorMake(0.0f, 0.0f, saveXYAxisStartLocation.z)];
CC3Vector rotateVector = CC3VectorMake(aMovement.y, aMovement.x, 0.0f);
Dobj.rotation = CC3VectorAdd(saveXYAxisStartLocation, rotateVector);
}
しかし、それは何の効果もありません...
私の例aMovement
では(UIPanGestureRecognizer*) gesture.translation
値です。