AddForce方法不起作用

时间:2016-03-16 20:45:55

标签: c# unity3d unity5 rigid-bodies

我正在为一堂课编写一个自上而下的黑客和斜线游戏。我们想要一个机械师,如果你被敌人击中,或敌人击中你,你就会被“击倒”。不幸的是,无论我尝试过什么,我都无法让敌人或玩家对武力作出反应。

以下列出了我已经检查过的其他问题,例如:

  • 玩家/敌人不是运动学
  • 尝试使用Gravity开启和关闭
  • 没有位置/轮换被冻结
  • Player / Enemy附有Rigidbodies
  • 玩家/敌人附有碰撞器,其中一个没有检查'isTrigger'功能。
  • 尝试过OnCollisionEnter和OnTriggerEnter
  • 力值高,质量,阻力和角度阻力

我已经没有想法了。非常感谢您提供的任何和所有支持。

以下是来自播放器Object:

的脚本中的代码片段
 public void OnTriggerEnter(Collider col)
{
    if (col.gameObject.tag == "EnemyHit" && !invincible)
    {
        Debug.Log("The player has been hit!");

        //sets player as invincible
        invincible = true;

        // Set the damaged flag so the screen will flash.
        hit = true;

        timeOfHit = Time.time;

        // Reduce the current health by the damage amount.
        currentHealth -= 1;

        GetComponent<Rigidbody>().AddForce(transform.forward * recoilThrust, ForceMode.Force);
        Debug.Log("This is the force that is being added to the player when it is hit. : " + -transform.forward * recoilThrust);
         //...
         }
 }

我可以证明(使用Debug.Log)函数,代码到达那里,并计算力。

2 个答案:

答案 0 :(得分:0)

是否启用了运动学?这样做会使对象忽略物理力。

答案 1 :(得分:0)

总结评论:

当对象除了刚体之外还有Rigidbody.AddForce时,

CharacterController不起作用。在这种情况下,效果必须是“伪造的”。可以在这里找到可能的方法:

基本上你需要使用CharacterController.Move来施加力量。