我在iOs上使用Cocos3D。我需要使用平移手势来旋转一个对象。
switch (gesture.state)
{
case UIGestureRecognizerStateBegan:
saveState = Dobj.rotation;
break;
case UIGestureRecognizerStateChanged:
CC3Vector rotateVector = CC3VectorMake(gesture.translation.y, gesture.translation.x, 0.0f);
Dobj.rotation = CC3VectorAdd(saveState, rotateVector);
break;
case UIGestureRecognizerStateEnded:
break;
default:
break;
}
这样我可以让我的对象(Dobj
)在自身上旋转。但似乎轴也在旋转,这导致了一些非常奇怪的旋转。
我是这样解决这个问题的。
switch (gesture.state)
{
case UIGestureRecognizerStateBegan:
saveState = CC3VectorMake(0.0f, 0.0f, 0.0f);
break;
case UIGestureRecognizerStateChanged:
CC3Vector rotateVector = CC3VectorMake(gesture.translation.y, gesture.translation.x, 0.0f);
[Dobj rotateBy:CC3VectorDifference(rotateVector, saveState)];
saveState = rotateVector;
break;
case UIGestureRecognizerStateEnded:
break;
default:
break;
}
使用rotateBy:
方法似乎只旋转对象而不改变其轴