【问题标题】:Why is my character not moving smoothly in my 2D sidescroller?为什么我的角色在我的 2D 横向卷轴中移动不顺畅?
【发布时间】:2019-07-12 01:38:29
【问题描述】:

当我按下左右箭头键时,角色并没有像预期的那样左右移动,而是在我按下按钮的同时向前猛拉、停止并重新启动。

我把整个游戏都放在这里了:https://codepen.io/alexis-lee-ann-stockdale/pen/qzvrop

我认为问题出在更新函数或键函数中。

这是我在更新函数中写的移动角色:

    game.player.y += game.player.vely;
    game.player.posx += game.player.velx;
    game.player.velx *= game.world.friction;
    game.player.vely += game.world.gravity;

如果这个问题太复杂而无法回答,请您指点我可能会使用的辅导服务吗?提前谢谢你。

【问题讨论】:

  • 是否有乘以摩擦的特定原因?而不是减法什么的?
  • 我正在关注一个乘以摩擦的教程。它是用于静态 2d 游戏,而不是横向卷轴。在这里:youtube.com/watch?v=w-OKdSHRlfA 减法会使其平滑吗?我是游戏开发的新手。
  • 我刚才试过了。它使角色自动向右滑动。
  • 我没有深入了解您的代码是如何工作的,所以我真的不知道。确实,摩擦力是你从角色的力(质量 * 加速度)中减去的力,它会间接影响速度。

标签: javascript html5-canvas game-development


【解决方案1】:

据我所知,停止和重新启动行为的原因是键重复。您正在收听keydown 事件,该事件在按键被按下时触发一次,然后在每次操作系统重复按键时再次触发。

只要按下键,您需要做的是向右或向左移动。你需要keep track of when a key is pressed and released,很遗憾没有更简单的方法。

【讨论】:

  • 谢谢。我会试试你的建议。
  • 这绝对是它。忽略不改变键状态的更新对其进行了测试,之后可以顺利运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多