如何解决为什么RigidbodyAddForce不移动我的胶囊?
我的代码
if (Input.GetKey(KeyCode.W) && Grounded()) rb.AddForce(transform.forward * speed * Time.deltaTime,ForceMode.Acceleration);
if (Input.GetKey(KeyCode.S) && Grounded()) rb.AddForce(-transform.forward * speed * Time.deltaTime,ForceMode.Acceleration);
if (Input.GetKey(KeyCode.D) && Grounded()) rb.AddForce(transform.right * speed * 0.75f * Time.deltaTime,ForceMode.Acceleration);
if (Input.GetKey(KeyCode.A) && Grounded()) rb.AddForce(-transform.right * speed * 0.75f * Time.deltaTime,ForceMode.Acceleration);
在旨在移动播放器的更新功能中,没有执行任何操作 接地的函数当前设置为返回true
解决方法
Nvm,我知道了,只是没有给予足够的力量
,我无法发表评论,否则我会问更多问题,但是以下是一些我想帮助调试的事情:
-
Grounded()是否返回true?尝试在您的FixedUpdate中放置一个打印语句,该语句打印Grounded()以确保其返回true。
-
您的速度够高吗?尝试将其设置为10,000之类的数字。如果由于某种原因您的物体真的很大时,它可能正在移动,但由于它的移动如此微小,您无法分辨。
-
确保rb正在调用有效的刚体。仅凭此代码,我无法确保正确设置刚体。
-
尝试逐一删除代码中的元素,以查找引起问题的原因。您的语法似乎正确
它应该工作,并确保速度变量不为0。
也:
- 您应该执行FixedUpdate()中与Rigidbody相关的所有事情,但是将输入保留在Update()中。
固定更新在每次物理更新之前都会被调用,因此您可以 不必担心时间安排和前后不一致。更新,在 另一方面,是根据帧速率而不是物理速度来调用的 更新。 More info on FixedUpdate()
然后,您必须将Time.deltaTime
替换为Time.fixedDeltaTime
- 您是否考虑使用轴,而不是基于键码的输入?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。