为精灵添加力量

时间:2018-06-17 13:12:24

标签: c# unity3d physics

我有一个二维角色,我想让它的头部弹出。

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

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旋转,我需要从父母那里得到它,但它仍然不会增加任何力量。

2 个答案:

答案 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);

        }
    }