为我的学校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);
}
}
}
}
答案 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...
}
作为一个初学者想一想,我保证你在将来的某个时候安全:)