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

使发射游戏中的物理体旋转更少,更逼真

白祺然
2023-03-14

我正在开发基于box2d物理的发射游戏类型的游戏。当主角被发射时,他会得到提升,或者被一些敌人减慢速度。问题是它是如何移动的。当他获得更高的速度时,他会旋转一个looot(非常非常快),我不喜欢它…你可能知道墨西哥卷饼野牛游戏。我想知道主角是如何移动得如此之好的。他有时会旋转,但只有一点点。我知道我可以通过将isFixedRotation设置为true来关闭旋转,但它看起来很糟糕。我想要旋转,但只有一点点。我也想知道这样的游戏中身体的最佳形状是什么。首先我有一个滑稽的角色,然后我决定让它成为完美的圆形,但是它像一个球一样在地板上旋转,所以我回到了这两者之间的东西:圆形,但不是完美的圆形。有人能告诉我一个让我的角色更逼真(或者更准确地说看起来更好)的好方法吗?我需要一些建议!

问候!

共有2个答案

皇甫树
2023-03-14

你可以检查每一帧的旋转速度,如果大于某个数量,就“剪辑”它。

例如:

float32 rotVel = body->GetAngularVelocity();
if(rotVel > maxVel)
{
   body->SetAngularVelocity(maxVel);
}
else if(rotVel < -maxVel)
{
   body->SetAngularVelocity(-maxVel);
}

这有帮助吗?

熊博远
2023-03-14

您可以使用阻尼参数、angularDamping/code>来减慢移动和旋转速度。

阻尼用于降低物体的世界速度。阻尼与摩擦不同,因为摩擦只发生在接触时。阻尼不能替代摩擦,这两种效应应结合使用。

阻尼参数应介于 0 和无穷大之间,0 表示无阻尼,无穷大表示全阻尼。通常,您将使用介于 0 和 0.1 之间的阻尼值。我通常不使用线性阻尼,因为它会使车身看起来漂浮。

 类似资料:
  • 我试着让两个立方体以不同的方式旋转。 为了设置旋转,我这样做。 在多维数据集类内部,我没有使用GL11.glLoadId相()来重置旋转,而是做了这样的事情。 这将重置每个轴的旋转。 数组“rot”保存x、y和z旋转,并通过多维数据集类中的这3种方法进行更新。 单独地,每个GL11.glRotatef(etc, etc, etc)和GL11.glRotatef(etc*-1.0f, etc, et

  • 我正在做一个多人游戏。每个客户端都有一个在共享环境中移动的字符。 我使用socket.io创建rooms,使用peer.js创建客户端之间的点对点连接。 我正在尝试做的是使每个客户端能够更新他的地图中其他玩家的角色的位置。 为此,每个客户端应该拥有其他玩家的键盘光标(箭头键)的状态,以便他能够用行走动画移动他们对应的角色。 p2p:我正在考虑在客户端之间创建双工流,这样每个客户端将拥有其他玩家的键

  • 我正在开发一个基于2D图块的游戏,其中所有图块旋转45度。 我想这样做: 原因是为了在2D游戏中创建不同的视角。 有相当多的基于瓷砖的游戏教程,但我不知道有像这样的旋转瓷砖。 所以我的问题是:如何创建旋转45度的瓷砖?我会感谢任何代码或链接。 编辑:忘了说我用的是Java Graphics2D,不是OpenGL

  • 如果我有一个类似“update(JsonObject body)”的调用,其目的是获取一个现有文档并更新部分文档,而不是全部文档,那么这是如何工作的?

  • 嗨,我正在尝试实现一个带有旋转的opengl程序 以下代码仅供参考:

  • 本文向大家介绍three.js实现围绕某物体旋转,包括了three.js实现围绕某物体旋转的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: 可以拖动右上角观察变化 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!