Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 精灵在一个方向上无限移动,或者卡在对角线上_C# - Fatal编程技术网

C# 精灵在一个方向上无限移动,或者卡在对角线上

C# 精灵在一个方向上无限移动,或者卡在对角线上,c#,C#,我正在做一个游戏项目,有一个基地帮助我开始。该库总体上非常有用,但是有一部分代码让我对如何正确操作感到困惑 运行此代码时,播放机精灵将无限期地沿某个方向移动,直到使用另一个按键为止。如果添加了playerMoveY,它将在对角线上移动 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Left) { player

我正在做一个游戏项目,有一个基地帮助我开始。该库总体上非常有用,但是有一部分代码让我对如何正确操作感到困惑

运行此代码时,播放机精灵将无限期地沿某个方向移动,直到使用另一个按键为止。如果添加了playerMoveY,它将在对角线上移动

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {

       if (e.KeyCode == Keys.Left)
        {
            playerMoveX = -1;
        }
        else if (e.KeyCode == Keys.Right)
        {
            playerMoveX = 1;
        }

如果看不到完整的代码,很难说清楚,但这可能是因为您没有
KeyUp
事件来重置移动值

与创建
KeyDown
事件以使用
Form1\u KeyDown
方法类似,请对
keydup

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
   if (e.KeyCode == Keys.Left)
    {
        playerMoveX = 0;
    }
    else if (e.KeyCode == Keys.Right)
    {
        playerMoveX = 0;
    }
  }

我认为需要更多的代码来理解您的问题。首先,如何使用playerMoveX?是三角洲吗?如果是,是否在精灵移动后将其设置为0?如何使用它?playerXPos=playerXPos+playerMoveX;请记住,如果玩家同时按下左键和右键,然后释放其中一个键,其他键将停止,如果玩家从左/右等方向快速改变方向,则可能会发生这种情况。有时,移动控制可能会非常灵活。我看到这个问题,尤其是现在我添加了Y轴,并希望沿对角线移动。最简单的修改方法是什么?