当前位置: 首页 > 知识库问答 >
问题:

如何在Monogame中规范我的对角线运动

萧心水
2023-03-14

我有一些简单的移动代码,唯一的问题是对角线移动比X和Y移动快。我知道如何在统一中使之正常化,但不是在一夫一妻制中。

private Vector2 _position;

protected override void Update(GameTime gameTime)
{
     

    if (Keyboard.GetState().IsKeyDown(Keys.W))
    {
        _position.Y -= 1;
    }

    if (Keyboard.GetState().IsKeyDown(Keys.S))
    {
        _position.Y += 1;
    }

    if (Keyboard.GetState().IsKeyDown(Keys.A))
    {
        _position.X -= 1;
    }

    if (Keyboard.GetState().IsKeyDown(Keys.D))
    {
        _position.X += 1;
    }
}

这应该是所有的相关代码,让我知道如果你需要更多。

共有1个答案

郎羽
2023-03-14

您可能应该这样做:

var dir = Vector2.Zero;
if (Keyboard.GetState().IsKeyDown(Keys.W))
{
    dir .Y -= 1;
}
// Same for all keys
....

// Ensure the vector has unit length
dir.Normalize(); 
// Define a speed variable for how many units to move
// Should probably also scale the speed with the delta time 
var deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds;
_position += dir * speed * deltaTime; 

我对一夫一妻不太熟悉。但总体方法应该是计算一个移动方向,将其标准化,并将其缩放到适当的速度,这在任何类型的游戏中都是有效的。

 类似资料:
  • 我试图传达身份验证/安全方案需要设置一个头,如下所示: 这是我根据swagger文档所做的:

  • 本运营规范旨在帮助你更加顺利地在QQ轻游戏平台进行运营。如果我们认为你的运营违反了我们的规范并且对平台造成了影响,则QQ轻游戏平台有权对你的游戏采取强制措施,包括但不限于限制你的游戏访问平台功能、封禁游戏、要求删除数据、终止协议等。 注册提交规范 你所提交的游戏,不得关联至你不具有完整合法权益或不具备完整授权的网站、应用程序、产品或服务等 为保障平台和其他用户的安全、稳定,我们会在你提交和运营游戏

  • 问题内容: 例如:conf.js 眼镜: 我需要读取conf.js文件中存在的参数值,以便可以在specs.js文件中读取它们,以根据该参数采取必要的操作;该值在conf.js中传递。有没有一种方法可以做到这一点。 问题答案: 是的,您可以使用访问所有配置值。请在此处查看更多详细信息 下面的例子 如果您希望使其可重复使用

  • 问题内容: PHP中是否存在用于URL规范化的预先存在的函数或类? 具体来说,请遵循Wikipedia文章中有关URL规范化的语义保留规范化规则(或我应该遵循的任何“标准”)。 将方案和主机转换为小写 转义序列中的大写字母 添加尾随/(到目录,而不是文件) 删除默认端口 删除点段 现在,我认为我将只使用,并分别应用规则,但我希望避免重新发明轮子。 问题答案: Pear Net_URL2库看起来至少

  • 问题内容: 我有一个linux服务器和许多具有许多操作系统的客户端。服务器从客户端获取输入文件。Linux具有行结束符LF,而Mac具有行结束符CR,Windows具有行结束符CR + LF 服务器需要作为行字符LF的结尾。使用java,我想确保该文件将始终使用linux eol char LF。我该如何实现? 问题答案: 结合两个答案(由Visage和eumiro撰写): 编辑: 阅读评论后。

  • 问题内容: 如何创建从任何给定单元格的左下角到右上角的对角线? 为了得到这个 to show this 问题答案: 我不知道这是否是最好的方法,但是我无法使用CSS做到这一点。我的答案是在jQuery中: or CSS part: jQuery code: 好处是它可以与表格单元的任何宽度和高度一起使用。