如何在游戏中为我的物体制作更平滑的旋转?

时间:2013-10-27 04:26:12

标签: actionscript-3 flash

我正在做一个游戏,屏幕顶部的昆虫会降落。游戏的目的是杀死这些昆虫。我已经为这些昆虫的移动方式制作了一个代码,但似乎问题在于它们似乎以非平滑的模式旋转。他们抽搐了! 这是代码:

 else // Enemy is still alive and moving across the screen
    {
        //rotate the enemy between 10-5 degrees
        tempEnemy.rotation += (Math.round(Math.random()*10-5));
        //Find the rotation and move the x position that direction
        tempEnemy.x -=  (Math.sin((Math.PI/180)*tempEnemy.rotation))*tempEnemy.speed;
        tempEnemy.y +=  (Math.cos((Math.PI/180)*tempEnemy.rotation))*tempEnemy.speed;
        if (tempEnemy.x < 0)
        {
            tempEnemy.x = 0;
        }
        if (tempEnemy.x > stage.stageWidth)
        {
            tempEnemy.x = stage.stageWidth;
        }
        if (tempEnemy.y > stage.stageHeight)
        {
            removeEnemy(i);

            lives--;
            roachLevel.lives_txt.text = String(lives);
        }
    }
}

} 我遇到的另一个问题是一些昆虫沿着屏幕边缘移动。用户几乎不能杀死他们,因为他们的一半身体在屏幕上,而另一半是关闭的。我可以让它们从边缘移动一点,就像偏移一样吗?谢谢!

1 个答案:

答案 0 :(得分:0)

从您的代码中看起来它们正在抽搐,因为您正在大幅度改变旋转:

tempEnemy.rotation += (Math.round(Math.random()*10-5));

相反,你应该插入/动画到你想要的旋转,而不是直接跳到它。有几种方法可以做到这一点,但不确定如何设置动画。

为防止昆虫直接进入屏幕边缘,您可以放入偏移并限制x / y位置。

比如去:

var offset:int = 100; // limits the max x to be 100 pixels from the right edge of the stage

if (tempEnemy.x > (stage.stageWidth - offset)){
    tempEnemy.x = stage.stageWidth - offset;
}