c#如何使桨平滑地移动

本文关键字:移动 平滑 何使桨 | 更新日期: 2023-09-27 18:06:27

为我学校的c#项目制作乒乓,需要帮助使桨顺利移动。现在他们移动的时候感觉很重。我只是c#的初学者,所以这是我目前所掌握的。

   void MovePaddle1(Keys key)
    {
        switch (key)
        {
            case Keys.W:
                {
                    paddle1.Top -= 20;
                    break;
                }
            case Keys.S:
                {
                    paddle1.Top += 20;
                    break;
                }
        }
    }
    void MovePaddle2(Keys key)
    {
        switch (key)
        {
            case Keys.I:
                {
                    paddle2.Top -= 20;
                    break;
                }
            case Keys.K:
                {
                    paddle2.Top += 20;
                    break;
                }
        }
    }
    private void Form2_KeyDown(object sender, KeyEventArgs e)
    {
        if (gameIsRunning == true)
        {
            //Move the paddles
            MovePaddle1(e.KeyCode);
            MovePaddle2(e.KeyCode);
        }
    }
}

}

c#如何使桨平滑地移动

将20更改为较小的值。它将以较小的增量移动。

同样,永远不要硬编码值。用常数代替。

const int SPEED = 5;
...
paddle1.Top -= SPEED;

这个算法怎么样?首先声明动画速度和目标位置变量:

float Speed = 0.1;
float TargetPos1 = 0;
float TargetPos2 = 0;

每帧更新动画(实际桨的位置)

Paddle1.Top += (TargetPos1 - Paddle1.Top) * Speed;
Paddle2.Top += (TargetPos2 - Paddle2.Top) * Speed;

如果你想现在改变桨的位置,你需要改变TargetPos变量:

TargetPos1 -= 20; //move paddle1 20 pixels down
TargetPos2 += 20; //move paddle2 20 pixels up

它实际上做的是桨不断地向TargetPos -位置,但更远的桨是远离这一点,它移动得更快。这将创建一个平滑的动画。对于摄像机缩放和跟踪摄像机移动也非常有用,例如在平台游戏中。对于乒乓游戏,当需要快速反应时,我更倾向于使用更高的Speed值来实现更快的移动。

哦,在最后一个函数的if语句中,你可以这样写:

if (gameIsRunning)
{
    //Move the paddles...
}

作为一个初学者考虑一下这个问题,我保证在将来的某个时候它会保护你:)