首页 > 解决方案 > 如何以随机间隔仅以不同的速度移动对象 500 像素?

问题描述

我正在尝试编写一段代码,允许对象随机“冲刺”500 像素。我已经把随机时间降低了,这是我遇到问题的特定距离。

这是一个我应该研究如何去做的任务,但我没有找到任何东西。我已经尝试创建一个增量变量,但计算速度不够快,我确信它与对象移动的这个方程有关:xPosition += xSpeed * xDirection;。我就是想不通。该代码还显示了一些其他功能,例如在覆盖 500 个像素后将速度降低到之前的速度。

另一个问题是我正在处理的网格有正数和负数,所以我不确定,但我是否也需要考虑这一点?

       if (xSpeed >= 10)
       {
            if (xPosition < 0)
            {
                distance = distance + 1;
            }
            if (xPosition > 0)
            {
                distance = distance + 1;
            }
        }

        if (collisionNum == ranCollision - 1)
        {
            dashPosStart = xPosition;
        }


        // Method for stopping dash
        if (distance >= 500)

        {
            while (xSpeed > startSpeed)
            {
                xSpeed--;
            }

            ySpeed = xSpeed / 2;

        }

        if (distance == 500)
        {
            dashPosFin = xPosition;
        }


        xPosition += xSpeed * xDirection; // Horizontal movement
        yPosition += ySpeed * yDirection; // Vertical movement

距离应该计算每个像素,但它的计算速度似乎比这慢得多,并且慢于每秒 60 次(程序工作的速度)。几天来我一直在努力解决这个问题,但我无法理解它。任何帮助/建议都会很棒!谢谢。

标签: c#object

解决方案


你总是把距离加一;因此,破折号总是需要 500 帧才能完成,而不是 500 像素的距离。

最短的解决方法是通过每帧的破折号速度增加距离(确保适当地处理负值)。


推荐阅读