在X - Y轴上旋转对象,cocos3D



我在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:方法似乎只旋转对象而不改变其轴

最新更新