为精灵增加力量



我有一个2D角色,我想让它的头弹出来。

添加力似乎是最合乎逻辑的,但我无法获得任何力量,这也必须取决于角色的旋转。因此,如果他侧躺,头部必须向左(或向右(射击。

public GameObject RagdollBody;
HingeJoint2D joint;
bool cut = false;
Rigidbody2D rb;
void Start()
{
joint = GetComponent<HingeJoint2D>();
rb = GetComponent<Rigidbody2D>();
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.name == "Blade" && !cut)
{
joint.enabled = false;
cut = true;
rb.AddForce(-RagdollBody.transform.forward * 500);
}
}

我看了一个使用-transform的视频,所以它会朝我想要的方向拍摄。由于头部始终是 0,0,0 旋转,我需要从父级那里获取它,但它仍然没有增加任何力。

您在 2D 游戏中使用transform.forward表示 Z 轴,或者"向内"。

如果你想向上增加力(相对于它的方向(,我建议试试这个

rb.AddForce(RagdollBody.transform.up * 500);

您是否需要在最后一行使用"AddRelativeForce"而不是"AddForce"?

如果将此脚本放在您要启动的头部,您可以尝试:

public GameObject RagdollBody;
HingeJoint2D joint;
bool cut = false;
Rigidbody2D rb;
void Start()
{
joint = GetComponent<HingeJoint2D>();
rb = GetComponent<Rigidbody2D>();
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.name == "Blade" && !cut)
{
joint.enabled = false;
cut = true;
rb.AddRelativeForce(Vector2.up * 500);
}
}

或者你可以把 2D 刚体全部放在一行中(只是为了保存行(:

public GameObject RagdollBody;
HingeJoint2D joint;
bool cut = false;

void Start()
{
joint = GetComponent<HingeJoint2D>();
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.name == "Blade" && !cut)
{
joint.enabled = false;
cut = true;
GetComponent<Rigidbody2D> ().AddRelativeForce(Vector2.up * 500);
}
}

最新更新