【发布时间】:2015-02-28 20:03:57
【问题描述】:
我有一把枪和一个玩家。我想限制枪的角度,这样玩家就不会将枪举得太高或太低。当鼠标朝右时,玩家和枪向右转,如果鼠标朝左,则玩家和枪向左转。当枪面向右侧时,我想将枪限制在 160 到 -160 之间。并在面向左侧时将枪限制在 20 到 -20 之间。所以它不会旋转超过约束限制。
我有一段代码可以让它旋转 360 度,但我不确定如何在它到达某个点后阻止它旋转。
if (parent != null)
{
var dx = MovieClip(parent).crosshair.x - x;
var dy = MovieClip(parent).crosshair.y - y;
var angle = Math.atan2(dy, dx)/Math.PI * 180;
rotation = angle;
}
【问题讨论】:
-
你的意思是 60 到 -60 当它面对的时候? 160 到 -160 给出 320 范围。面朝右是不行的,因为在某个时候你会开始面朝左,
-
抱歉,我对轮换周期有点困惑。
-
你知道我该如何实现吗?谢谢。
-
您不必从字面上“停止”它。只需像您一样计算角度并根据限制检查它。我不记得 AS3 角度值是如何与方向对应的,但我们假设例如正确的方向是从 0 到 180。所以,如果您的角度在 (0..180) 范围内,那么您就面向右侧。现在,对于这个范围,您的限制应该是 30 和 150。您可以:
if (angle < 30) angle = 30; if (angle > 150) angle = 150;。左侧方向也类似。 -
奇怪了,左边不行。我尝试切换你给我的代码,。对于第二个代码,我将 > 切换为