统一下降平台与回归

时间:2018-06-11 09:55:10

标签: c# unity3d

我的代码为什么它的回归平台

public class Falling : MonoBehaviour {

    Rigidbody2D rb;
    Vector2 initialPosition;
    bool platformMovingBack;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        initialPosition = transform.position;
    }

    void Update()
    {
        if (platformMovingBack)
            transform.position = Vector2.MoveTowards(transform.position, initialPosition, 20f * Time.deltaTime);

        if (transform.position.y == initialPosition.y)
            platformMovingBack = false;
    }

    void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.name.Equals("Personage_0") && !platformMovingBack)
        {
            Invoke("DropPlatform", 0.5f);
        }
    }

    void DropPlatform()
    {
        rb.isKinematic = false;
        Invoke("GetPlatformBack", 1f);
    }

    void GetPlatformBack()
    {
        rb.velocity = Vector2.zero;
        rb.isKinematic = true;
        platformMovingBack = true;
    }
}

几秒钟后平台返回原来的位置,但随后它被删除了,我不知道如何修复它。

1 个答案:

答案 0 :(得分:1)

在每种情况下,platformMovingBack都不会设置为false。改变这个:

void Update()
    {
        if (platformMovingBack)
            transform.position = Vector2.MoveTowards(transform.position, initialPosition, 20f * Time.deltaTime);

        if (transform.position.y == initialPosition.y)
            platformMovingBack = false;
    }

为:

void Update()
    {
        if (platformMovingBack)
            transform.position = Vector2.MoveTowards(transform.position, initialPosition, 20f * Time.deltaTime);

        if (Mathf.Abs(transform.position.y - initialPosition.y) < (Time.deltaTime *2.0f)){
            platformMovingBack = false;
            transform.position = initialPosition;
        }
    }

例如......

正如Sebastian Kilb在评论中提到的那样;)