繁体   English   中英

As3三角学和数学

[英]As3 Trigonometry and math

我正在尝试创建一个带有围绕圆圈旋转的圆圈的迷你游戏,但是,当我拍摄圆圈并碰到第二个圆圈时,它没有继续该角度,而是“跳到”另一边,我确定这与应该重置的角度var之类的。 你能帮我在这里变得紧张吗... :( 检查例子

这是我的用于处理圆的输入框架函数的代码

public function UpdateCircles(e:Event):void
    {
        for (var i:int = 0; i < EnemySpriteVector.length; i++) 
        {
            EnemySpriteVector[i].rotation += EnemySpriteVector[i].enemyspeed;
        }

        var rad:Number = angle * (Math.PI / 180); // Converting Degrees To Radians
        if (IsplayerShoot)
        {
            playerSprite.x += Math.cos(rad) * PlayerCircleShootSpeed;  
            playerSprite.y += Math.sin(rad) * PlayerCircleShootSpeed; 

            for (var j:int = 0; j < EnemySpriteVector.length; j++) 
            {
                if (EnemySpriteVector[j].hitTestPoint(playerSprite.x,playerSprite.y) && (EnemySpriteVector[j].IsCircleHit == false))
                {
                    trace("hit");
                    EnemySpriteVector[j].IsCircleHit = true;
                    removeChild(EnemySpriteVector[0]);
                    EnemySpriteVector.splice(0, 1);

                    var EnemySprite:Sprite = new EnemySpriteClass();
                    EnemySpriteVector.push(EnemySprite);
                    addChild(EnemySprite);
                    EnemySprite.x = Math.random() * stage.stageWidth;
                    EnemySprite.y = Math.random() * stage.stageHeight;
                    IsplayerShoot = false;
                }
            }
        }
        else
        {   
            playerSprite.x = EnemySpriteVector[0].x + EnemySpriteVector[0].radius * Math.cos(rad); // Position The Orbiter Along x-axis
            playerSprite.y = EnemySpriteVector[0].y + EnemySpriteVector[0].radius * Math.sin(rad); // Position The Orbiter Along y-axis
            angle += EnemySpriteVector[0].enemyspeed; // Object will orbit clockwise
            playerSprite.rotation = (Math.atan2(playerSprite.y - EnemySpriteVector[0].y, playerSprite.x - EnemySpriteVector[0].x) * 180 / Math.PI); //only rotates the player circle itself
        }
    }

看起来当粉红色的圆圈碰到绿色的圆圈时,它只是从其左侧继续旋转。 一种快速的解决方案是角度增加180度 请记住,这仅适用于静态对象。 如果您想要更动态的环境,我建议您使用向量(线性代数) 向量数学真的很容易理解,并且隐藏了许多复杂的三角函数。 您可以从这里开始 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM