我正在学习如何使用Unity3D而我正处理动画问题。我有一个GameObject,这是我的角色,我希望他跳。首先,我使用键盘输入空格键。
jumpForce是公共浮点变量,其值为700
if (grounded && Input.GetKeyDown(KeyCode.Space)) {
anim.SetBool("Ground", false);
rigidbody2D.AddForce(new Vector2(0, jumpForce));
}
然后我试图从XBox360控制器垫获取输入,一切都很好。但是使用相同的代码(只是将GetKeyDown更改为控制器的GetButton),角色跳得更高。使用控制器,达到的最大速度为53(我得到了rigidbody2D.velocity.y的值),但是使用键盘时,值为13。 如果我更改了jumpForce的值没有任何反应,则值保持不变,但如果我将其设置为0,则该字符不会跳转。
我想知道变量jumpForce和AddForce函数的实用程序,如果它不改变速度的值。谢谢
答案 0 :(得分:3)
答案 1 :(得分:1)
如果您在处理物理时正在尝试不同的行为,那么您可能正在使用Update
而不是FixedUpdate
,也就是说,您正以不同的速率使用力量。
在处理Rigidbody时,应该使用FixedUpdate而不是Update。例如,当向刚体添加力时,必须在FixedUpdate中的每个固定帧上应用力,而不是在Update中的每个帧。