【问题标题】:Bouncing ball on isometric line等轴测线上的弹跳球
【发布时间】:2020-10-15 00:45:36
【问题描述】:

我正在尝试为我的等距游戏模拟弹跳球效果。我得到了一个代码,它可以从这个链接正常工作: https://physics.stackexchange.com/questions/256468/model-formula-for-bouncing-ball#:~:text=The%20coefficient%20of%20restitution%20is,ball%20it%20is%20around%200.75.

我想将生成的运动,即 (h) 转换为 iso。我最终得到了这个两个方程

        // Walk from current postion in ISO line
          transform.position = new Vector2(transform.position.x + oneCellSize, 
              transform.position.y + (oneCellSize * IsoRatio));

        // Perfect bouncing effect on ISO line but in wrong position
          transform.position = new Vector2(transform.position.x + 0.02f, 
            (transform.position.x + oneCellSize) * IsoRatio +  BallHightOnTime );

但我未能将它们合并在一起,因为第二个使用的是 x 位置。当我尝试更改为 y 时,它只是以一种疯狂的方式移动。

【问题讨论】:

  • 对不起,我无法理解“这两个方程”,弹丸运动中的垂直位置是v0*t - g*t*t/2。参数 t 是运动开始以来的时间。
  • 在提供的代码链接中使用了这些形式,它们的结果在第二个等式中使用的 ( BallHightOnTime ) 变量中给出。
  • 如果您确定 BallHightOnTime 计算正确,可能问题是 BallHightOnTime 之前的括号,我认为应该是transform.position.y + (oneCellSize * IsoRatio) + BallHightOnTime
  • 第三维在哪里?您仅在 2D 平面中移动,您需要使用将 3D 位置转换为 2D ISO 坐标的功能。在不知道投影的情况下,它看起来像 iso.x = (b.x + b.y) * IsoRatio; iso.y = (b.x + b.y) * IsoRatio - b.z * IsoZRatio; 其中b 是球的 3D 位置,iso 是 2D 投影位置。请注意,大多数 Iso 投影在 z 轴上会有不同的比例,如果您使用(例如)2 x 1 iso 网格,x 和 y 轴将各自有自己的比例(比例是首选术语,而不是比例)
  • Will Shingo,我已经尝试过这样做,但由于某种原因,球开始飞得很高,疯狂阅读!但是,当使用 transform.postion.x 时,它几乎可以写,但它朝错误的方向移动,我不希望它与 x 坐标一起工作

标签: unity3d game-physics physics bounce isometric


【解决方案1】:

在你的帮助下,我想出了一个解决我的问题的方法,方法是创建一个单独的矢量,该矢量根据 ISO 线移动,然后在添加计算出的高度后将其分配给球的位置。

谢谢你们的帮助。

【讨论】:

    猜你喜欢
    • 2021-06-20
    • 2013-05-14
    • 2013-05-23
    • 2013-01-13
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多