- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我使用绳索时,我正在开发一个游戏,它是我在 Box2d 中使用圆和关节创建的。当我用较小的力拖动绳索时,它会按预期工作,而在其他情况下(当力更大时)它会像疯了似的拉伸(stretch),我不知道如何修复它并创造更稳定的绳索。我尝试了不同类型的关节(RopeJoint、RevoluteJoint、DistanceJoint 等),但没用。这是我的代码:
public class RopeItem {
public Body body;
private com.badlogic.gdx.graphics.g2d.Sprite bodySprite;
float width, length;
public CircleShape shape;
public RopeItem(World world, float width, float height, BodyType bodyType, Vector2 position) {
super();
//init body
BodyDef bodyDef = new BodyDef();
bodyDef.type = bodyType;
bodyDef.position.set(position);
this.body = world.createBody(bodyDef);
//init shape
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.density = 0.1f;
fixtureDef.friction = 0.4f;
fixtureDef.restitution = 0.2f;
shape = new CircleShape();
shape.setRadius(width / 2);
fixtureDef.shape = shape;
fixtureDef.filter.categoryBits = 0x0001;
fixtureDef.filter.maskBits = 0x0002;
this.body.createFixture(fixtureDef);
shape.dispose();
//create a body sprite
bodySprite = new com.badlogic.gdx.graphics.g2d.Sprite(new TextureRegion(new Texture("data/rope_circle.png")));
bodySprite.setSize(width, height);
bodySprite.setOrigin(width/2, height/2);
body.setUserData(bodySprite);
}
public void createRope(int length) {
RevoluteJoint[] joints = new RevoluteJoint[length - 1];
RopeJoint[] ropeJoints = new RopeJoint[length - 1];
float width = 0.23f, height = 0.23f;
for(int i=0; i<length; i++) {
ropeSegmenets.add(new RopeItem(world, width, height, BodyType.DynamicBody, new Vector2(0.3f, 0)));
}
RevoluteJointDef jointDef = new RevoluteJointDef();
jointDef.localAnchorA.x = -height / 2;
jointDef.localAnchorB.x = height / 2;
RopeJointDef ropeJointDef = new RopeJointDef();
ropeJointDef.localAnchorA.set(0, -height / 2);
ropeJointDef.localAnchorB.set(0, height / 2);
ropeJointDef.maxLength = length;
for(int i = 0; i < length-1; i++) {
jointDef.bodyA = ropeSegmenets.get(i).body;
jointDef.bodyB = ropeSegmenets.get(i + 1).body;
joints[i] = (RevoluteJoint) world.createJoint(jointDef);
ropeJointDef.bodyA = ropeSegmenets.get(i).body;
ropeJointDef.bodyB = ropeSegmenets.get(i+1).body;
ropeJoints[i] = (RopeJoint) world.createJoint(ropeJointDef);
}
}
截图:
正常:
拉伸(stretch):
如果你知道如何解决这个问题,请帮助我。
谢谢,查理!
最佳答案
它的发生是因为链的每一部分只在本地解决它的位置约束,也就是说,它只看它的两个最近的邻居。它把那些邻居拉向自己,也把自己移向他们的中心。链条中间的一 block 不关心您将绳索末端连接到的固定点。
唯一可以保证完全固定的方法是将链条的每一段都用绳索接头连接到其他每一段。所以如果你有 n 个物体,你将需要 (n^2+n)/2 个关节。
下一个最好的办法是将链条的每一段都用绳索接头连接到固定端。那将是2n个关节。然而,如果你想拉动绳索,那么你还需要有一个绳索接头来连接玩家可以拾取和拖动的每一段链条。如果你想让玩家选择并拖动到他们喜欢的任何地方,你又回到了 (n^2+n)/2 的情况。
您也许可以部分地做到这一点,例如。沿线均匀地展开一些额外的绳索接头,仅将一些点连接到链条的末端。
如果您的绳索不需要在整个长度上具有物理可碰撞性,那么我建议使用绳索接头连接两端,并使用 verlet 绳索点在两者之间渲染样条曲线或其他东西。
但是从屏幕截图来看,您似乎正试图将绳索卡在可碰撞点上并用张力将其拉到它们周围。我真的不认为您会喜欢尝试使用 Box2D 执行此操作的体验。您需要的是专门为绳索物理设计的定制行为。我不知道那里有任何好的现有源代码,但是您可以从这个视频中得到一些好的想法:https://www.youtube.com/watch?v=Krlf1XnzZGc
关于android - LibGDX Box2D 绳索疯狂地拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24814548/
我想创建一个随页面宽度变化的页眉。 我的标题由三部分组成,固定宽度的两侧和可拉伸(stretch)的中间部分。 我使用 displa
我正在尝试在导航栏下方创建一列内容,以便内容的宽度与导航栏的宽度完全匹配。事实证明这比我预期的要困难。 给定这样的东西: link
我有一个大小为 12*30 的字符串的图像。我想创建一个动画,让它给人一种拉伸(stretch)字符串的感觉。我通过缩放图像来做到这一点,但我面临的问题是缩放图像没有发生碰撞。它仅出现在原始图像大小的
在 Silverlight 中,如何拉伸(stretch) Line 的宽度以填充作为子元素的 StackPanel 的宽度?更喜欢 XAML 解决方案,而不是代码隐藏。这是我在 WPF 中的操作方法
QML 怎么可能?自动拉伸(stretch)元素以使其所有子元素都适合它?以及如何指定间距?例如,我想在文本周围有一个矩形。矩形应该有一些内部间距。 如果我写以下内容,则矩形的大小为 0,0。 Rec
我已经习惯了使用 matlab,现在正在尝试转换 matplotlib 和 numpy。 matplotlib 中是否有一种方法可以让您绘制的图像占据整个图形窗口。 import numpy as n
我有一个(简化的)2x2 网格,里面有三个控件。左控制在两行上延伸。
假设我有 3 个大小不匹配的列表,[3, 7, 6]、[12, 67, 89, 98] 和 [1, 2, 3, 4, 5, 6, 7]我想要一个函数来执行此操作: >>> stretch([3, 7,
如果 Image 被 Stretched,我可以获取 Height 和 Width 吗>UniformToFill? 我尝试了 Width 和 Height 属性,但它们始终是 NaN。 最佳答案 如
当我为微调器使用我自己的背景主题时,它是拉伸(stretch)图标。 我的微调器代码是: 我的 spinner.xml 是: 和我从 sdk 4 复制的图
我正在尝试在 OpenGL 中创建一个简单的 GUI。我创建了一张图片,以便我可以引用它并使解释更简单: 当我将按钮 (32x32) 的纹理应用到大小为 120x20 的四边形多边形(即不是矩形作为纹
SurfaceTexture 预览被拉伸(stretch)了!我正在开发一个 camera2 应用程序。每个设备都工作不好。视频和照片的预览被拉伸(stretch)。 public class Cam
我使用一些ImageButtons 创建了一个Android layout。我的布局在小屏幕(例如 3.6 英寸到 4.2 英寸)上运行良好,但是当我在 7 英寸或 9 英寸平板电脑上使用我的应用程序
我在拉伸(stretch) GridView 以适应显示宽度时遇到问题。任何人都知道如何解决这个问题?我希望 GridView 占据整个宽度,包括蓝色标记的字段(见下图)
我使用位图作为 Activity 的背景。自定义背景代码为: 但是它位于中间,并没有占据整个屏幕空间。我怎样才能让它填满所有可用空间?我尝试将宽度和高度设置为 fill_parent。 谢谢 最
所以我最近一直在为 iOS 开发应用程序,但遇到了一个难题。我正在制作一个迷你合成器,然后开始制作 GUI。我开始制作键盘(目前为 2 个 Octave )并测量了白键的大致长度。一切都很好,直到我在
好的,所以我在 slider 内有一个图像,但它不能正确缩放。 先小后伸,想一直伸到底,怎么实现? 看一下截图(忽略第二张截图中的红色部分): 还有CSS: .slider-wrapper {
我有下面的 HTML,我希望容器 div 拉伸(stretch)到窗口的整个高度。这对 wine 有效,但是当您移除容器内的两个蓝色 div 时会发生什么?容器延伸到其中蓝色 div 的底部,但不会延
我正尝试在 this example 之后制作背景,但我需要嵌套 2 个容器。 我的代码看起来像这样: XHTML:
这是关于用颜色填充背景。 我正在构建 this project 的 SwiftUI 版本.这是一个选项卡式应用程序(测试工具)。 This is my Working Project 我要做的第一件事
我是一名优秀的程序员,十分优秀!