AddForce不起作用

时间:2017-06-20 15:17:48

标签: c# unity3d

我在具有Input.GetMouseButton(0)条件的FixedUpdate()方法中有以下代码:

public void playerAttack()
{
    RaycastHit hit;
    if (Physics.Raycast(player.transform.position, player.transform.forward, out hit, range)) //range = 7f
    {
        if (hit.rigidbody != null && hit.transform.tag == "Enemy")
        {
            Vector3 dir = new Vector3(hit.transform.position.x, hit.transform.position.y, hit.transform.position.z - 100f);
            hit.transform.GetComponent<Rigidbody>().AddForce(dir * weaponPush * Time.deltaTime); //weaponPush = 1f
        }
    }

}

敌人物体上有刚体并且没有选择isKinematic。当我几乎在它前面并单击鼠标左键时,它仍然不会移动。

1 个答案:

答案 0 :(得分:3)

这不起作用可能是因为很多事情:

  • 您的 Rigidbody 可以设置为Kinematic
  • 您的 Rigidbody drag值可能太高
  • 你的物体可以移动,但是你没有看到它,因为力量很小(可能是使用Time.deltaTime的原因)
  • 如果您的对象位于[0.0f, 0.0f, 100.0f],则dir向量将为Vector3.zero

另外作为旁注,我建议在Time.fixedDeltaTime内使用FixedUpdate()Time.deltaTime将返回相同的值,但这样你就记得在“物理”框架内工作了。) / p>

希望这有帮助,