微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AddForce transform.forward无法在2D整体中使用

如何解决AddForce transform.forward无法在2D整体中使用

GetComponent<Rigidbody2D>().AddForce(transform.forward * Time.deltaTime * forceGathered,ForceMode2D.Impulse);

不会使游戏对象在2D Unity中移动。

我想根据另一个游戏对象的旋转方向施加力量gameobject

解决方法

GetComponent()需要一个参数,在您的情况下为Rigidbody2D,因此应如下所示:

GetComponent(typeof(Rigidbody2D)).AddForce(transform.forward * Time.deltaTime * forceGathered,ForceMode2D.Impulse);

...而简称为:

GetComponent<Rigidbody2D>().AddForce(transform.forward * Time.deltaTime * forceGathered,ForceMode2D.Impulse);

此外,我建议您缓存Rigidbody2D组件,因为每次需要访问GetComponent()时,它的使用都会变得非常昂贵。 最好在开始时将其缓存:

Rigidbody2D rg;

void Start(){
    rg = GetComponent<Rigidbody2D>();
}

void YourMovementFunction(){
    if (!rg) return;
    rg.AddForce(transform.forward * Time.deltaTime * forceGathered,ForceMode2D.Impulse);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。