在鼠标点击方向上从角色射击

时间:2014-05-11 13:04:51

标签: actionscript-3 math game-physics

首先,我想说我不是很擅长AS3,我完全是自学成才,所以我确信有很多事情我做得很糟糕,效率低下或者说不好如果有什么可以改进的话,我对这些问题的评论感到高兴。

所以我试图为玩家添加功能,以便能够点击我的游戏的一部分和#34; hook"将在鼠标单击方向上从角色射出一定长度。然后,这将是钩子和平台之间的碰撞检测。

然而我遇到的问题是我不知道如何运行代码来定位钩子需要触发的角度,我明白这是一定数量的数学和任何帮助都可以被给予会有所帮助(即使你不能解决我的问题)

到目前为止,我已经能够找到我的英雄和鼠标点击位置的x和y位置,此代码如下所示:

 public function Hookshot (event:MouseEvent):void {

    PlatformInstance[i] =new Platform();
        var _point:Point = localToGlobal (new Point(mouseX,mouseY));
         var heroX:int = Smallclock_hero.x;
         var heroY:int = Smallclock_hero.y;
         trace (heroX)
        trace (heroY)
         trace(_point.x)
        trace(_point.y)
    }

我还不确定还有其他任何相关的代码,因为我还没有能够解决如何做这种数学问题。

如果您需要任何其他代码或有任何问题,请提前离开并提前致谢!

2 个答案:

答案 0 :(得分:1)

Math.atan2(y, x)会将x和y值转换为角度:

var mousePos:Point = localToGlobal(new Point(mouseX,mouseY));
var heroPos:Point = localToGlobal(new Point(Smallclock_hero.x, Smallclock_hero.y));

var dx:Number = mousePos.x - heroPos.x;
var dy:Number = mousePos.y - heroPos.y;
var radians:Number = Math.atan2(dy, dx);

// Convert the radians value to degrees
var angleInDegrees:Number = radians * 180/Math.PI;

trace(angleInDegrees);

Math.atan2()文档: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Math.html#atan2()

答案 1 :(得分:0)

你的问题与AS3无关,因为它是简单的代数。

如果您拥有角色的x,y和目标的x,y,那么您只需要使用直线的等式来获得角度。

ATAN((Y2-Y1)/(X2-X1))

那应该给你弧度,然后简单地乘以(180 / pi)得到度