【发布时间】:2017-12-23 13:51:20
【问题描述】:
我是 Unity 新手,我使用 CharacterController.Move 来移动我的角色。在我的游戏世界中,1 个单位 = 1 米。
这很有效,例如速度:如果我使用 5 的速度,则角色的速度为 5m/s。
我让我的角色跳跃使用:
if (Input.GetButton("Jump"))
moveDirection.y = jumpHeight;
...
moveDirection.y -= gravity * Time.deltaTime;
这也很好用,但是由于重力将我的角色拉下,所以实际上并没有达到 jumpHeight。例如,jumpHeight 为 8 会导致某物体的跳跃高度约为 2.4 米。
如何更改我的代码,使 jumpHeight 代表角色将跳跃的高度,即使重力将他拉下也是如此?基本上,当 jumpHeight 为 8 时,我希望我的球员跳出 8 米。
根据物理学,初始速度为 8,高度为 1.6,重力为 20 (height = initialvelocity^2/(2*gravity))。如果这确实是我在游戏中看到的高度,我可以简单地转换公式,但我看到的高度约为 2.4 米......
【问题讨论】:
-
你有没有想过使用vector3.slerp的一些解决方案?
标签: unity3d