【发布时间】: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