所以我在 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
值。