2013-04-14 67 views
0

我正在制作一款游戏,如果敌人处于一定范围内且位于玩家面前,玩家可以攻击敌人。我制定了半径距离,并根据玩家面对的方式使其朝前,但是我如何创建角度使其像玩家的锥形一样。我有一张图片。细绿线是我已经计算出来的半径,但是我如何计算红锥。如何计算角度

下面是更多更好的理解

http://tinypic.com/view.php?pic=28v63h0&s=6

图像这是我迄今所做的

{ 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.events.KeyboardEvent; 
    import flash.events.MouseEvent; 
    import flash.ui.Keyboard; 

    public class Player extends MovieClip 
    { 

     var radius:Number = 60; 

     public function Player() 
     { 
      addEventListener(Event.ENTER_FRAME, Update); 
     } 

     function Update(event:Event) 
     {  
      var radiusx:Number = x+radius*Math.cos(rotation/180*Math.PI); 
      var radiusy:Number = y+radius*Math.sin(rotation/180*Math.PI); 

      // Rotate to mouse; 
      var dx = parent.mouseX - x; 
      var dy = parent.mouseY - y; 
      var angle = Math.atan2(dy,dx)/Math.PI * 180; 
      rotation = angle; 

     } 
    } 
} 

回答

0

可以使用正切的定义:

tan(a/2) = s/(2d) 

其中s是敌人的尺寸(直径),d是敌人的最短距离。这里a是总可见角度(两条红线之间)。

+0

@ sashkello感谢您的回复,但我似乎无法使用我的编码。你介意告诉我如何在代码中做到这一点,以适应我的游戏。 – user218130

+0

我不知道你实际上想要达到什么目的。你的问题是关于计算角度的问题,这是你如何做到的。对不起,不能再有任何帮助 – sashkello

+0

@ Sashkello:这很好,现在我确切地知道我在找什么。我一直在寻找球员的视线,但我已经看到了许多基于视线的教程,所以我只需要检查它们,谢谢。 – user218130