Beispiel #1
0
    public bool setMove(Vector2 moveDir)
    {
        this.moveDir = moveDir;
        t            = 0f;
        lastPos      = tilePos.getPosition();

        if (isOnLadder && !Mathf.Approximately(moveDir.x, 0))
        {
            return(false);
        }

        Collider2D collider = Physics2D.OverlapPoint(lastPos + moveDir + new Vector2(.5f, .5f), ~LayerMask.GetMask("Player"));

        if (collider == null || collider.isTrigger)
        {
            if (!isOnLadder && !Mathf.Approximately(moveDir.y, 0f))
            {
                if (collider != null && collider.gameObject.layer == LayerMask.NameToLayer("Ladder"))
                {
                    isOnLadder = true;
                }
                else
                {
                    return(false);
                }
            }
            else if (isOnLadder && (collider == null || !(collider.gameObject.layer == LayerMask.NameToLayer("Ladder"))))
            {
                GetComponentInChildren <playerAudio>().scrape();
                isOnLadder = false;
            }

            tilePos.setPosition(lastPos + moveDir, false);
            isMoving = true;
            if (isOnLadder)
            {
                GetComponentInChildren <playerAudio>().scrape();
            }
            return(true);
        }
        return(false);
    }