- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的游戏中,我有一个 spinner ,就像马里奥中的那些一样。
当游戏不滞后时,旋转器会完美运行并以恒定速度 360 度完整旋转。
然而,当它滞后时(Android 版本经常发生),gaps start appearing between the different projectiles and it doesn't even rotate in a circle anymore, it just rotates in a distorted elliptical pattern .
这是我的 Spinner 的 Java 代码
helper += speedVariable * 1f;
speedY = (float) (speedVariable *helper2 * Math.cos(Math.toRadians(helper)));
speedX = (float) (speedVariable * -1 * helper2 * Math.sin(Math.toRadians(helper)));
setX(getX() + (speedX * delta) + ((Background.bg.getSpeedX() * 5) * delta));
setY(getY() + (speedY * delta));
float helper 是使微调器旋转的余弦和正弦函数内部的字段
speedVariable 控制公转速度
helper2 设置它旋转的半径
我做错了什么吗?谢谢!
最佳答案
不要相对于前一个位置设置新位置。您想留在围绕中心点的圆上,因此从该点可靠地计算位置要容易得多:
setX(getCenterX() + xFromCenter + (Background.bg.getSpeedX() * 5));
setY(getCenterY() + yFromCenter);
(我不确定背景部分是关于什么的,我只是假设它应该保留。)
xFromCenter
和 yFromCenter
是旋转的余弦和正弦。在您的原始代码中,您在 helper
中进行了轮换,所以让我们保持这样。但是您应该将 delta
应用于它的增量,因为您希望在相同的秒数内旋转相同的度数。
helper += speedVariable * delta;
这样想:delta 应该直接影响它的旋转量,而不是它在 x 和 y 轴上移动的量(因为这些值不会随时间线性变化)。
然后你可以像得到 speedX
那样得到 xFromCenter
,除了现在那里不需要速度,对 Y 做同样的事情。虽然我设置了X 为 cos,Y 为 sin,而不是相反——这是典型的用法,角度从右侧的 0 开始测量。 (区别只是旋转了 90 度。)
还有一个小问题:计算时可以使用MathUtils.sinDeg()
和cosDeg()
函数,不需要转弧度并将结果转换回 float 。它更具可读性。
完整代码:
helper += speedVariable * delta;
xFromCenter = helper2 * MathUtils.cosDeg(helper));
yFromCenter = -1 * helper2 * MathUtils.sinDeg(helper));
setX(getCenterX() + xFromCenter + (Background.bg.getSpeedX() * 5));
setY(getCenterY() + yFromCenter);
您可能需要使用常量(helper2、speedVariable、-1 乘法)并可能取消 X 和 Y 的交换以获得您想要的,但这应该使对象在所有条件下都保持在一个圆上。
关于java - Delta-time lag compensation 弄乱了我的游戏 Spinner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23439749/
我有一个看起来像这样的结构: class Foo { union { size_t cap; char buff[15]; }; bool is
也许我只是在搜索错误的术语,但我能找到的关于这个主题的信息很少,我认为这可能是我的应用程序的问题。 前段时间有篇文章说的是iOS设备触摸屏的准确度,跟其他手机比起来好像很差。这是一个关于它的帖子的链接
努力:我正在构建一个基于聊天网络客户端的文字游戏,我需要在其中对输入的聊天文本进行服务器调用以在聊天广播之前对其进行验证。 我知道 Meteor提供开箱即用的延迟补偿。但鉴于它仍处于“早期预览”阶段,
Take a look here first 当 div#container 旋转“x”度时, and 和里面的元素也会旋转。但我想要所有每个内部 面对平坦。如果我旋转 Y 所有 通过“-x”度,它不
我正在使用 spring 的 ldap 补偿事务管理器。我正在使用DefaultTempEntryRenamingStrategy 。它通过将实体(因此 dn )重命名为 _temp 来进行就地软删除
我正在尝试使用 BPMN 为某些软件的部署过程建模。部署的各个部分都可能出错,我想在图中指出在每种情况下应该采取哪些步骤。 起初,我似乎应该为此使用“补偿”事件,但最终我使用了“错误”事件。我一直无法
我已经定义了这个函数 def writeonfiles(a,seed): random.seed(seed) f = open(a, "w+") for i in range(
在我的游戏中,我有一个 spinner ,就像马里奥中的那些一样。 当游戏不滞后时,旋转器会完美运行并以恒定速度 360 度完整旋转。 然而,当它滞后时(Android 版本经常发生),gaps st
在 CSS 中,当我将元素宽度设置为 100px 然后将其填充设置为 10px,它的实际宽度为 120px。 注意:我不确定这种情况是一直发生还是仅在 position = absolute 时发生,
我的 HDR 应用程序可以使用不同的曝光补偿设置拍摄三张照片,但我无法在拍摄后立即更改曝光补偿值。属性更新时间有限制吗? for var i = 0 ; i ", error: nil)
好的,所以我有一个段落标记,其中包含一些文本,文本指的是用户可以查看导航的方向(我知道这是不必要的,但无论如何)。现在,我试图用 1 block 石头杀死 2 只鸟,方法是使用 javascript
我有一个关于 Axon Saga 的问题。我有一个项目,我有三个微服务,每个微服务都有自己的数据库,但是两个“从属”微服务必须将他的数据共享给“主”微服务,为此我想使用 Axon Saga。我已经问过
我是一名优秀的程序员,十分优秀!