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);
}
}
}
}
将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...
}
作为一个初学者考虑一下这个问题,我保证在将来的某个时候它会保护你:)