首页 > 解决方案 > 如何使 2d 平台在 unity2D 中表现得像钢琴键?

问题描述

我正在统一制作一个 2D 游戏,其中我的角色很小,并且我有一个角色沿着钢琴行走的关卡。我的问题是如何为钢琴键编写物理代码,其中我的角色落在它上面的速度会影响它下降的程度,此外,当我的角色离开所述键时,它会回到未按下的正常位置。

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

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

标签: c#unity3dgame-physics

解决方案


好的,让我们定义问题。当玩家踩到它时,我们希望将对象移动一定的垂直距离。我们可以通过检查刚体的 OnCollisionEnter2D() 事件来检测。当检测到碰撞时,您可以访问玩家对象的质量变量或任何定义的变量。

然后使用这个定义的重量向下移动钢琴键。如果没有发生碰撞,我们将键移回原来的 y 位置。

重量可以是附加到玩家对象的变量或刚体质量变量。移动钥匙的部分可以随心所欲地发生。
通过:Transform.Translate Rigidbody.AddForce 等...

所以如果 Collision.GameObject.Name == "YourPlayerName" && transform.position.y > lowerLimit 访问你的 RigidBody 组件并使用 AddForce 函数。有点像 blablabla.AddForce(new Vector2(0,-(Collision.rigidbody.mass * someRandomFactorYouWantToMultiplywith))

否则向上移动钢琴直到达到原来的高度。

我在我的手机上写这个格式希望它有帮助:)


推荐阅读