左右移动刚体
moving a rigidbody left and right
我似乎无法让我的刚体左右移动。代码看起来不错,与其他人发布的代码非常相似!
正在调用调试语句,但我的角色没有左右移动。
感谢您的帮助。
public float speed = 4.0f;
void Update()
{
float moveDirection = Input.GetAxis("Horizontal");
if (Input.GetKeyDown("d"))
{
Debug.Log("pressed d");
rb.AddForce(new Vector2(Time.deltaTime * speed * moveDirection, 0), ForceMode2D.Force);
}
我刚刚使用 3D 环境对其进行了测试,但这应该无关紧要。所以毕竟我很确定你有办法减少对 AddForce
.
施加的力
因此请尝试将 speed
增加到大约 40000
,然后您应该能够注意到正在应用 AddForce
。
如果您想保持较低的 speed
值,您当然可以在此处添加一个乘数:
rb.AddForce(new Vector2(Time.deltaTime * speed * moveDirection * 10000f, 0), ForceMode2D.Force);
一个不错的单行选项是使用转换翻译。
void Update ()
{
transform.Translate(Vector3.right * speed * Input.GetAxis("Horizontal") * Time.deltaTime);
}
AddForce 不适用于运动学的刚体。在 Rigidbody 组件中验证并设置 isKinematic 为 false。
如果这已经是错误的,请尝试按照 d4Rk 的建议增加力值。
我似乎无法让我的刚体左右移动。代码看起来不错,与其他人发布的代码非常相似!
正在调用调试语句,但我的角色没有左右移动。
感谢您的帮助。
public float speed = 4.0f;
void Update()
{
float moveDirection = Input.GetAxis("Horizontal");
if (Input.GetKeyDown("d"))
{
Debug.Log("pressed d");
rb.AddForce(new Vector2(Time.deltaTime * speed * moveDirection, 0), ForceMode2D.Force);
}
我刚刚使用 3D 环境对其进行了测试,但这应该无关紧要。所以毕竟我很确定你有办法减少对 AddForce
.
因此请尝试将 speed
增加到大约 40000
,然后您应该能够注意到正在应用 AddForce
。
如果您想保持较低的 speed
值,您当然可以在此处添加一个乘数:
rb.AddForce(new Vector2(Time.deltaTime * speed * moveDirection * 10000f, 0), ForceMode2D.Force);
一个不错的单行选项是使用转换翻译。
void Update ()
{
transform.Translate(Vector3.right * speed * Input.GetAxis("Horizontal") * Time.deltaTime);
}
AddForce 不适用于运动学的刚体。在 Rigidbody 组件中验证并设置 isKinematic 为 false。 如果这已经是错误的,请尝试按照 d4Rk 的建议增加力值。