【问题标题】:Unable to add force to instantiated object无法对实例化对象施加力
【发布时间】:2017-04-23 17:31:56
【问题描述】:

当前通过单击按钮在运行时实例化对象(预制件)。每次我单击按钮时,该对象都会实例化,但即使我已对其施加了力,它也不会移动。

检查了类似的问题,即 GameObject 和 Rigidbody2D 之间的转换不匹配,但这不是我的问题。尝试在右变换和前变换之间切换乘以一个大数,以防该值太小而无法进行也没有区别的更改。任何帮助表示赞赏。谢谢。

以下脚本位于 Player 对象上。预制件从对象“tip”实例化,该对象是 Player 对象上的子对象。 Rigidbody2D 设置为 Kinematic 用于子弹。

 public Transform tip;
 public Rigidbody2D bullet;

 if (Input.GetButtonDown("Fire1")) {
    Rigidbody2D clone;
    clone = Instantiate(bullet, tip.position, Quaternion.identity) as Rigidbody2D;
    clone.AddForce(clone.transform.right * 5000000);
 }

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    Rigidbody2D 设置为 Kinematic 用于子弹。

    这是错误的:物理引擎从不移动 Kinematic 对象,将子弹刚体类型更改为 Dynamic,您使用 AddForce 施加的力将移动子弹。

    【讨论】: