我有一个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);
}
}