예제 #1
0
    void Fall()
    {
        bool transport = false;

        if (Physics2D.Raycast(currentPos, lastMoveDir, .05f, fallLayer))
        {
            transport = Physics2D.Raycast(currentPos, lastMoveDir, .05f, fallLayer).collider.GetComponent <TransplantObject>();
        }

        if (transform.localScale.x >= 1)
        {
            Cache.fadeToBlack.FadeInScreen();
        }
        float scale = Mathf.Lerp(transform.localScale.x, 0, 3 * Time.deltaTime);

        if (scale > .1f)
        {
            transform.localScale = new Vector3(scale, scale, 1);
        }
        else
        {
            if (transport)
            {
                TransplantObject fallThrough = Physics2D.Raycast(currentPos, lastMoveDir, .05f, fallLayer).collider.GetComponent <TransplantObject>();
                fallThrough.HoldPlayer();
                fallThrough.MoveObject(gameObject);
            }
            else
            {
                RecoverPlayer();
            }
        }
    }
예제 #2
0
    void Fall()
    {
        bool transport = false;

        if (Physics2D.Raycast(currentPos, lastMoveDir, .05f, player.fallLayer))
        {
            transport = Physics2D.Raycast(currentPos, lastMoveDir, .05f, player.fallLayer).collider.GetComponent <TransplantObject>();
        }

        float scale = Mathf.Lerp(transform.localScale.x, 0, 2 * Time.deltaTime);

        if (scale > .1f)
        {
            transform.localScale = new Vector3(scale, scale, 1);
        }
        else
        {
            if (transport)
            {
                TransplantObject fallThrough = Physics2D.Raycast(currentPos, lastMoveDir, .05f, player.fallLayer).collider.GetComponent <TransplantObject>();
                fallThrough.MoveObject(gameObject);
            }
            else
            {
                ResetTile();
            }
        }
    }