如何使2d平台在unity2D中表现得像钢琴键?

时间:2019-06-07 09:11:24

标签: c# unity3d game-physics

我正在统一制作2D游戏,我的角色很小,而且我有一个角色可以沿着钢琴行走的水平。我的问题是我该如何为钢琴键的物理编码进行编码,使我的角色掉落在其上的速度影响其下降的幅度,此外,当我的角色离开所说的键时,它又回到未按下的正常位置。

  • 我曾尝试将这个问题视为弹簧体,并尝试使用弹簧接头2d组件解决一些问题,但是它过大了位置,也不允许我将其刚体作为运动学对象,这是理想的选择。
  • 我还尝试用Hooke方程的弹力和一些其他参数对弹簧物理进行编码,但没有成功。

可以预料的是,字符会落在键上,在字符离开键后会下降一点,然后又向上上升。

感谢您提供所有答案,也欢迎您提供问题格式提示!

1 个答案:

答案 0 :(得分:1)

好的,让我们定义问题。 我们想在玩家踩到某个物体时将其移动一定的垂直距离。 我们可以通过检查Rigidbodies的OnCollisionEnter2D()事件来检测到这一点。 检测到碰撞时,可以访问播放器对象的质量变量或任何定义的变量。

然后使用此定义的重量向下移动钢琴键。 如果没有发生碰撞,则将键移回其原始y位置。

权重可以是附加到玩家对象的变量或所述刚体质量变量。 您可以随意移动钥匙的部分。
通过:  转换  刚性体  等等...

因此,如果Collision.GameObject.Name ==“ YourPlayerName” && transform.position.y> lowerLimit 访问您的RigidBody组件并使用AddForce函数。 就像blablabla.AddForce(new Vector2(0,-(Collision.rigidbody.mass * someRandomFactorYouWantToMultiplywith))

然后向上移动钢琴,直到达到原始高度。

我正在手机上写这篇文章,希望格式能对您有所帮助:)