【问题标题】:Constrain connection/rope/line to avoid stretching约束连接/绳/线以避免拉伸
【发布时间】:2015-12-22 22:34:10
【问题描述】:

我们一直在开发一个游戏 (2d),其中一个对象可以连接到静态点。每个连接(在我们的例子中是一根绳子)都有一个可以改变的固定长度(当时只有一个)。情况可能如附图所示。现在我想知道物体可以向哪个方向移动,以及直到一些绳索完全伸展多远。换句话说,我想知道哪根绳子可以缩短,以及在一些绳子伸展之前可以缩短多少。感谢您的任何提示!

【问题讨论】:

    标签: java android algorithm libgdx game-physics


    【解决方案1】:

    围绕每个静态点画一个半径等于长袍长度的圆。与所有圆相交的区域是对象可以移动的区域。在该区域的边缘,至少有一件长袍被拉伸。

    【讨论】:

    • 您好,非常感谢您的意见。我也是这么想的。因此,如果我想检查对象是否可以移动到 X 方向,我只需要确定新位置是​​否超过了其中一个静态点(及其绳索)的半径,对吗?但是如何找出它可以向所需方向移动多远呢?计算最小超出距离就足够了吗?
    • 您需要计算所需方向的线与所有圆的交点。离起点对象最近的路口就是这个方向你能拿到的票价。
    • 基本一样不是吗?假设对象的新位置是 O(x/y) 那么我必须计算圆和 P 之间的距离,即“距离 = sqrt((circle.xO.x)^2 + (circle.yO.y )^2) - 半径”如果大于 0 则不能移动,如果小于 0 则可以移动“moveDistance = Math.abs(distance)”? (所有圆圈中最小的moveDistance?)
    • 如果你的意思是用 (circle.x,circle.y) 作为圆的中心,我不同意。在大多数情况下,您要移动的方向与指向圆心的方向并不完全相反。
    • 我在上面更新了我的评论。啊,现在我明白你的意思了。您在对象应移动的方向上有一条线。位于直线上并且在所有圆圈内的最远点是对象可以移动到的最远点?您将如何有效地实现它?
    猜你喜欢
    • 2017-01-01
    • 2015-02-15
    • 2011-09-06
    • 2016-07-31
    • 2010-10-14
    • 2022-01-16
    • 2013-04-17
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多