0

经过几次尝试,平台并没有恢复到原来的位置,但后来它被删除了,我不知道如何修复它。

public class FallingPlatform : MonoBehaviour
{
    private Rigidbody2D rb;

    // Use this for initialization
    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    private void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.name.Equals("Ellen"))
        {

            Invoke("DropPlatform", 0.5f);
            Destroy(gameObject, 2f);
            InvokeRepeating("DropPlatform", 0.5F);
            respawn(gameObject, 2f);
        }
    }

    private void InvokeRepeating(string v1, float v2)
    {
        throw new NotImplementedException();
    }

    private void respawn(GameObject gameObject, float v)
    {
        throw new NotImplementedException();
    }

    private void DropPlatform()
    {
        rb.isKinematic = false;
    }
4

1 回答 1

0

缺少有关您尝试做的事情的一些上下文。但是,我猜你正在制作一个游戏,你有一个玩家在不同的平台上跳跃,他们在碰到他们后摔倒,然后你希望他们重新出现。需要注意的几点: 1)您的 respawn 函数只是抛出一个异常(因此调用它没有意义)。2)一旦 Destroy 函数运行,其他任何东西都不会运行(这可能是它在几次后停止工作的原因。

可能有更好的方法来实现您想要做的事情(例如,无需将 rb.isKinematic 设置为 false 以启用重力)。但是为了在不过多更改代码的情况下回答您的问题,您可以尝试下面的代码。它应该使平台在 0.5 秒后下降,并在 1.5 秒后回到原来的位置。如果这不是您正在寻找的内容,请分享有关您正在尝试做的事情的更多信息。

public class FallingPlatform : MonoBehaviour
{
    private Rigidbody2D rb;
    private Transform originalTransform;

    // Use this for initialization
    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    private void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.name.Equals("Ellen"))
        {

            Invoke("DropPlatform", 0.5f);
            respawn(gameObject, 2f);
        }
    }

    private void InvokeRepeating(string v1, float v2)
    {
        throw new NotImplementedException();
    }

    private void respawn(GameObject gameObject, float v)
    {
        gameobject.transform.position = originalTransform.position
        rb.isKinematic = true;
    }

    private void DropPlatform()
    {
        originalTransform = gameobject.transform;
        rb.isKinematic = false;
    }
于 2019-05-23T05:57:12.193 回答