스프라이트 회전 + = 10; Sprite.rotation * = 0.97;as3 회전 드래그/가속
시스템이 180에서 -180으로 변하기 때문에 어느 방향으로 움직여도 계속 회전하는 객체에 드래그를 적용하는 방법을 모르겠습니다. 어떻게 든 라디안으로 변환 한 다음 무언가를해야합니까? 나는 수학에 나쁘다.
스프라이트 회전 + = 10; Sprite.rotation * = 0.97;as3 회전 드래그/가속
시스템이 180에서 -180으로 변하기 때문에 어느 방향으로 움직여도 계속 회전하는 객체에 드래그를 적용하는 방법을 모르겠습니다. 어떻게 든 라디안으로 변환 한 다음 무언가를해야합니까? 나는 수학에 나쁘다.
실제로는 180에서 -180 (Reuben이 말하는 것과는 반대로)이지만 상위/하위 값은 자동으로 해당 범위 (즉 181이 -179로 변환 됨)로 수정됩니다.이 작업에 대한 한 가지 방법은 수학 (어떤 애니메이션이나)에 대한 보조 변수를 사용하고 회전에 할당하는 것입니다, 말 :
myVar+=10;
myVar*=.97;
clip.rotation=myVar;
내가 "드래그"당신이 게시 한 코드로 의미가 확실하지 않다. 여러분이 보았던 것은 천천히 물체를 0 회전으로 되돌릴 것입니다.
드래그/가속 효과를 원할 경우 모든 프레임을 적용하는 가속도 인수로 별도의 변수를 만듭니다. 그런 다음 해당 변수에 요인을 적용하여 회전을 느리게하거나 속도를 늦출 수 있습니다.
뭔가 같은 :
private var _rotationAcceleration:Number = 0;
private var _dragFactor:Number = 0.97;
private var _clip:Sprite;
private function startSpin():void {
_rotationAcceleration = 10.0;
}
private function enterFrameListener(event:Event):void {
_clip.rotation += _rotationAcceleration;
_rotationAcceleration *= _dragFactor;
}
난 당신이 찾고있는 생각 :
private function updateRotation():void
{
var _dx:Number = _player.x - stage.mouseX; // rotate _player mc to mouse
var _dx:Number = _player.y - stage.mouseY; // rotate _player mc to mouse
// which way to rotate
var rotateTo:Number = getDegrees(getRadians(_dx, _dy));
// keep rotation positive, between 0 and 360 degrees
if (rotateTo > _player.rotation + 180) rotateTo -= 360;
if (rotateTo < _player.rotation - 180) rotateTo += 360;
// ease rotation
var _trueRotation:Number = (rotateTo - _player.rotation)/5; // rotation speed 5
// update rotation
_player.rotation += _trueRotation;
}
public function getRadians(delta_x:Number, delta_y:Number):Number
{
var r:Number = Math.atan2(delta_y, delta_x);
if (delta_y < 0)
{
r += (2 * Math.PI);
}
return r;
}
public function getDegrees(radians:Number):Number
{
return Math.floor(radians/(Math.PI/180));
}
이 내가 찾고있는 대답은, 덕분에 많이 – Jeffrey