2013-03-27 7 views
0

Я использую Cocos3D для iOS. Мне нужно вращать объект с помощью жесты.Вращение объекта по оси X Y, 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), чтобы повернуть на себя. Но кажется, что ось также вращается, и это вызывает некоторые действительно странные вращения.

Как это исправить?

ответ

1

Так вот, как я решил свою проблему.

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:, кажется, чтобы повернуть объект только без изменения его оси

Смежные вопросы