我有一个二维角色,我想让它的头部弹出。
添加力似乎是最合乎逻辑但我无法获得任何力量,它也必须依赖于角色旋转。因此,如果他侧身躺着,头部必须向左(或右)射击。
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旋转,我需要从父母那里得到它,但它仍然不会增加任何力量。
答案 0 :(得分:1)
您正在使用代表Z轴的transform.forward
,或者在第2场游戏中使用“向内”。
如果您想向上添加力(相对于其方向),我建议尝试使用
rb.AddForce(RagdollBody.transform.up * 500);
答案 1 :(得分:1)
你是否可能需要在最后一行使用“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);
}
}