2013-10-15 2 views
0

Есть ли способ сделать sprite вращаться после контакта с другими спрайтами, но без приложенных к нему сил трения?SpriteKit: вращение без трения

Если я установить

sprite.physicsBody.friction = 0.0; 
sprite.physicsBody.allowsRotation = YES; 

вращение не происходит.

ответ

-1

Может быть, я не получаю точку, но то, что вы, кажется, хотят сделать, это на самом деле просто:

sprite.zRotation = 1.0; // Note: zRotation is in radians 

Или использовать SKAction rotateToAngle:duration: если вы хотите, чтобы вращение происходит в течение определенного периода времени.

+0

Я хочу, чтобы трение вызывало вращение, но не влияло на скорость спрайтов. –

+0

Хммм я не верю, что это возможно – LearnCocos2D

0

Если вы хотите, чтобы тело вращалось при скользящем контакте с другими телами, необходимо некоторое трение. (Точно так же, как в физике реального мира!) Вы хотите, чтобы трение вызывало вращение, но проявляйте без трения поведение, когда оно вращается? Если это так, то перечитывание предыдущего предложения должно дать ключ к ответу: вам нужно изменить коэффициент трения после того, как тело начнет вращаться. Установка contact delegate дает вам возможность внести это изменение. Это также хорошо для любого другого случая, когда вы хотите «выманить» результаты столкновения после его возникновения, например, переустановить скорость тела до заданного значения.

0

Если вы хотите управлять вращением самостоятельно, вы можете обнаружить столкновение с делегатом и применить угловой импульс следующим образом: [sprite.physicsBody applyAngularImpulse: 0,05];