- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个类似 HTML5 3D fps 的引擎,它看起来已经相当不错,但由于这可能是制作 3D 的最糟糕的语言选择之一,因此有时会出现明显的延迟。
我将运动 (WASD) 编程为独立于渲染速度,因此有时它非常不稳定,但其他时候则以可接受的 30+ fps 运行(当然取决于 CPU)。
唯一让我无法集中精力的是跳跃:目前跳跃是通过向下落变量添加一个正常数(重力始终为负,然后通过碰撞检测进行校正)然后减去一个常数来完成的,这就是每次渲染新帧时都会调用,问题是当 fps 变低时我感觉就像在月球上一样。与慢动作效果相比,我更喜欢抖动效果。
如果我使用与移动相同的方法(计算当前帧和最后一帧之间的时间),则扣除的变量有时会变得太大,并且跳跃顶点会发生变化(与高 fps 相比,变为该值的一半) - 这是 Not Acceptable 因为跳跃高度必须始终相同。
这里有一些伪代码可以帮助理解问题(在一个渲染例程中调用):
// when clicked on spacebar:
if(spacebar)
{
// this defines jumping apex
jump = 0.5
}
// constant added to y (vertical position) later in the code
cy += jump;
// terminal velocity = -2
if(jump > -2)
{
// gravity (apex multiple to get maximum height)
jump -= 0.05;
}
if(collision_with_floor)
{
// stop falling
cy = 0;
if(jump < 0)
{
jump = 0;
}
}
player.position.y += cy;
现在具有与时间相关的跳跃(替换上面的代码):
// terminal velocity = -2
if(jump > -2)
{
// gravity, 0.4 is an arbitrary constant
jump -= (now - last_frame)*0.4;
last_frame = now;
}
为了更好地说明,下面是正在发生的事情的图像:
蓝点表示帧渲染。
我什至不确定这是否是编写跳跃程序的正确方法。基本上,急躁和恒定的跳跃高度比平滑和慢动作效果更好。
最佳答案
如果帧更新太慢而无法获得准确的物理效果,那么也许您可以修改跳跃顶点,以便玩家始终击中它。这里的提示可能是当 y 速度从正变为负时。如果我正确地阅读了你的伪代码,那么它看起来像:
old_cy = cy;
cy += jump;
if(old_cy > 0 && cy <= 0)
player.position.y = jump_apex_height;
就您的图表而言,我们的想法是您想要识别到达橙色线的蓝点,然后将其提升到虚线。
现在我正在考虑这个问题,如果玩家真的每次都必须到达跳跃顶点,那么这甚至对于高速率更新也可能有所帮助.
关于javascript - 游戏编程: remove movement lag (jumping),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8472444/
Cesium SandcaSTLe demo说明了使用“movement”和“movement.endPosition”来获取鼠标移动的 Cartesian2 坐标。一个例子是 "Picking" d
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我一直在玩 webGL,我已经达到了可以制作图形非常可怜的小型三维游戏的程度(到目前为止,它更多的是概念/功能的证明)。对于三维体验来说,向任意方向无限移动鼠标来旋转第一人称视角是很不错的。 Poin
这是我第一次在这里写文章。我对 JQuery 动画有一些问题:当持续时间非常慢(例如 10000)时, Action 不够平滑。我的 div 需要一个“自然”的运动。有人知道我的问题的解决方案吗?或者
我正在开发离线 FPS 多人游戏。 当 Player Rotation 值为 (0,0,0) 时,Player 会朝着完美的方向移动。但是,我的问题是当我使用触摸输入旋转相机时。玩家也可以旋转脸部并按
我在分布式系统中遇到分片移动问题。 【问题】 最初每个分区负责任意数量的分片。 (这个数字可以是任意的,因为系统支持将分片从一个分区移动到另一个分区) 然后一个新的分区来了,系统需要重新分片。目标是使
是否可以在窗口中停止鼠标移动并仅允许在特定框中移动? 例如,我有一个div,其宽度:200px和高度:200px,只允许在此div中移动鼠标。 谢谢。 最佳答案 Javascript 可以读取鼠标位置
我创建了一个自定义组件,它扩展了 TextField 并允许对特定类型的字符串进行高级编辑。 箭头键已被重新定义以允许特定行为并且应该不会触发默认的插入符移动但是我似乎无法阻止它移动。我已经使用了()
我创建了一个自定义组件,它扩展了 TextField 并允许对特定类型的字符串进行高级编辑。 箭头键已被重新定义以允许特定行为并且应该不会触发默认的插入符移动但是我似乎无法阻止它移动。我已经使用了()
我想做一个函数,根据传递的字母改变特定的值。 (这些基本上给出了方向:东,西......) 代码是: data Movement = N Int | S Int | E Int | W Int de
我正在从事一个非常酷的项目,我正在收集有关光标移动的数据,但我遇到了一个问题,我认为我需要一些帮助。我不断读取有关光标 x 和 y 位置的数据(以及其他相关数据),一旦光标在 y 维度上超过某个阈值,
我怎样才能在 Sprite 被施加这样的冲动后停止它: player.physicsBody!.applyImpulse(CGVectorMake(50, 0)) 是否有可能使运动在一段时间内减少?
我有一个子菜单,当悬停在导航元素上时,它会变为可见。当该元素不再悬停时,子菜单将变为不可见并向上移动。我已经在下面附上了我的部分代码。我面临的问题是,由于子菜单就在导航元素的正下方,向上移动会在转换期
我是 Unity 新手,正在关注 this tutorial .当我尝试执行代码时遇到的错误应该是左右移动播放器是: UnassignedReferenceException: The variabl
谷歌最近在那里重新设计了移动行为 map 。现在在移动设备上,您可以用两根手指移动 map 。 (请参阅手机上的 map-simple 示例,而不是任何浏览器模拟器!)。 我想在 openlayer
据我了解,GPS 的精度有限。是否有可能在 3D 空间中获得一个人的更精确的位置? 我计划编写一个应用程序,用户可以将手机向任何方向移动,但只需要移动几英尺。是否有任何技术(也许使用加速度计和陀螺仪)
如何防止图像移动。如果图像的位置 = 350,如何防止移动。类似于遏制,恰恰相反。请帮忙。 $('#image').draggable( {
这是我应该问的问题,而不是这个: Emacs evil: space as a prefix key in motion state 我想定义一堆用于移动、移动、打开和关闭窗口和缓冲区的命令,这些命令
我是计算机类三人组的三分之一(高中新生)。对于我们的项目,我们决定用 Java 制作一个吃 bean 人风格的游戏。我们都没有太多经验,所以到目前为止,我们基本上都是在自学。我们已经取得了相当大的进步
我正在开发一个类似 HTML5 3D fps 的引擎,它看起来已经相当不错,但由于这可能是制作 3D 的最糟糕的语言选择之一,因此有时会出现明显的延迟。 我将运动 (WASD) 编程为独立于渲染速度,
我是一名优秀的程序员,十分优秀!