继续前进

时间:2016-03-26 19:45:05

标签: actionscript-3

所以我正在尝试使用flashpunk在AS3中制作一个基本的互动宠物游戏,因为它能够使用精灵表。我已经动画了(闲置和行走)并移动了“宠物”,但我遇到了一个问题。

使用我当前的系统,我必须按住单击以继续将宠物移向鼠标,但是我希望它在我点击时移动到鼠标所在的位置而不是将其按住。

这是我的代码(检查鼠标是否被释放部分只是为了它可以停止动画):

    override public function update():void
    {
        trace(FP.angle(sprRocket.x, sprRocket.y, FP.world.mouseX, FP.world.mouseY))
        if (Input.mouseDown)
        {
            move(FP.world.mouseX, FP.world.mouseY)
            Moving = true
        }
        if (Input.mouseReleased)
        {
            Moving = false
        }
        if(Moving && FP.angle(sprRocket.x, sprRocket.y, FP.world.mouseX, FP.world.mouseY) < 130 && FP.angle(sprRocket.x, sprRocket.y, FP.world.mouseX, FP.world.mouseY) > 20)
        {
            sprRocket.play("WalkU")
        }
        if (Moving && FP.angle(sprRocket.x, sprRocket.y, FP.world.mouseX, FP.world.mouseY) < 350 && FP.angle(sprRocket.x, sprRocket.y, FP.world.mouseX, FP.world.mouseY) > 225)
        {
            sprRocket.play("WalkD")
        }
        if (!Moving)
        {
            sprRocket.play("Idle")
        }
        //if (FP.angle(sprRocket.x, sprRocket.y, FP.world.mouseX, FP.world.mouseY) < 130 && FP.angle(sprRocket.x, sprRocket.y, FP.world.mouseX, FP.world.mouseY) > 20)
        //{
            //sprRocket.play("WalkU")
        //}
        //else
        //{
            //sprRocket.play("IdleD")
        //}
    }

    public function move(x:int,y:int):void
    {
        var angle:int = FP.angle(sprRocket.x, sprRocket.y, x, y)
        sprRocket.x += 100 * Math.cos(angle * FP.RAD) * FP.elapsed
        sprRocket.y += 100 * Math.sin(angle * FP.RAD) * FP.elapsed
        trace(angle)
    }

1 个答案:

答案 0 :(得分:0)

我使用了补间系统内置的flashpunks。

我还需要通过使用速度三角形公式(时间=距离/速度)并使用内置距离的flashpunk来保持恒定速度而不是总持续时间(关闭点为10秒,这是非常缓慢)计算器(FP.distance(x1,y1,x2,y2))

感谢您的帮助!