【问题标题】:AddForce Method Not WorkingAddForce 方法不起作用
【发布时间】:2016-03-16 20:45:55
【问题描述】:

我正在为一个班级编写一个自上而下的砍杀游戏。我们想要一个机制,如果你被敌人击中,或者敌人击中你,你会被“击退”。不幸的是,无论我如何尝试,我都无法让敌人或玩家对原力做出反应。

以下是我检查过的其他问题中建议的事项列表:

  • 玩家/敌人不是运动的
  • 尝试开启和关闭 Gravity
  • 没有位置/旋转被冻结
  • 玩家/敌人附加了刚体
  • 玩家/敌人附加了碰撞器,一个带有和一个没有检查“isTrigger”功能。
  • 尝试了 OnCollisionEnter 和 OnTriggerEnter
  • 力值高,质量、阻力、角阻力低

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

这是来自播放器对象的脚本的代码的 sn-p:

 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)函数,代码到达那里,并且计算了力。

【问题讨论】:

  • 嗯,这里似乎没有什么问题,因为您提到在帖子末尾检测到碰撞。你是如何移动你的播放器的?是基于物理的,还是直接修改变换位置?
  • 您能提供一些值吗?对于计算的力和质量?还有一个刚体的屏幕截图,可以查看那里的统计数据。
  • @Programmer - 我会看看我能做什么。大多数代码已记录为包含程序员的姓名,因此我将看看是否可以将它们取出用于没有人名的构建版本。 Serlite-我正在使用 CharacterController.Move()。 GunnarB.- 玩家的质量、阻力和角度阻力为 1。敌人的质量、阻力和角度阻力为 100。当调低到 1 时,敌人会移开。问题仍然存在于播放器中。我得到的信息是:这是玩家被击中时添加的力量。 : (4542.7, 1.4, -99896.8) 谢谢大家到目前为止的帮助。
  • 嗯,这是一个很大的力量,所以这不应该是一个问题。您可以尝试的一件事是使用另一个 ForceMode。可能是Impulse
  • 之前试过了,什么也没做。现在正在“构建”这个没有人名的项目,应该很快就会完成。

标签: c# unity3d unity5 rigid-bodies


【解决方案1】:

总结一下cmets:

当对象除了刚体之外还有CharacterController 时,Rigidbody.AddForce 不起作用。在这种情况下,效果必须是“伪造的”。可以在这里找到可能的方法:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 啊,引用 OP,“玩家/敌人不是运动的”。虽然如果他没有写那将是一个很好的猜测......
    • 上面提到 IsKinematic 设置为 false。
    • 我的错。读得太快了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2016-05-25
    相关资源
    最近更新 更多