如何解决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 举报,一经查实,本站将立刻删除。