C#如何使拨片顺畅移动

时间:2015-08-05 00:05:22

标签: c# pong

为我的学校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);
        }
    }

}

}

2 个答案:

答案 0 :(得分:1)

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

此外,永远不要硬代码值。请改用常量。

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

答案 1 :(得分:0)

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

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

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

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...
}

作为一个初学者想一想,我保证你在将来的某个时候安全:)