C# 如何以不同的速度以随机间隔移动对象500像素?

C# 如何以不同的速度以随机间隔移动对象500像素?,c#,object,C#,Object,我正在尝试编写一段代码,允许对象随机“冲刺”500像素。我已经记下了随机时间,这是我遇到问题的具体距离 这是一个任务,我应该研究如何做,但我没有找到任何运气。我尝试过创建一个增量变量,但计算速度不够快,我确信它与对象移动的方程有关:xPosition+=xSpeed*xDirection;。我就是搞不懂。该代码还显示了一些其他功能,比如在覆盖500像素后将速度降低到以前的速度 另一个问题是,我正在处理的网格有正数和负数,所以我不确定,但我是否也需要考虑这一点 if (xSpeed

我正在尝试编写一段代码,允许对象随机“冲刺”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
如果(xSpeed>=10)
{
if(xPosition<0)
{
距离=距离+1;
}
如果(X位置>0)
{
距离=距离+1;
}
}
如果(collisionNum==ranCollision-1)
{
dashPosStart=xPosition;
}
//停止短跑的方法
如果(距离>=500)
{
while(xSpeed>startSpeed)
{
X速度--;
}
y速度=x速度/2;
}
如果(距离==500)
{
dashPosFin=xPosition;
}
xPosition+=xSpeed*xDirection;//水平运动
Y位置+=Y速度*Y方向;//垂直运动

距离应该是每一个像素计数,但它的计数速度似乎要慢得多,并且慢于每秒60次(程序运行的速度)。这件事我已经想了好几天了,就是想不通。任何帮助/建议都会很好!谢谢。

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


最短的修复方法是在每一帧中以破折号速度增加距离(确保适当地处理负值)。

您应该以每秒像素(或单位)为单位工作。当您更新屏幕并检查当前和上一次更新之间的增量时间时。(使用秒表)将其与所需速度相乘。(这将处理更新/秒的波动)在一个方向上移动的像素量取决于速度,如果你说移动200px/秒(假设你有60hz显示器),那么你每帧移动3.33像素谢谢!我只知道这将是一个简单的解决方案,我试图过度思考。它工作得很好。