타일 안깔았을땐 프레임 120까지 나오면서 왜 타일깔고 충돌지정하면 프레임이 20까지 떨어지는지.. 

순전히 타일이 많아지면 그렇게 되는지 원..


혹시모르니 코드도 첨부함다


그리고 이코드로 했을때 충돌체에서 좀 비비면 뚫고지나가는 버그있던데 그런건 어케 잠슴까?


public class CharacterMove : MonoBehaviour {


    private readonly float moveSpeed = 3.0f;


    private Rigidbody2D playerRigidbody;


    Animator anim;


    // enum은 그냥 숫자를 문자로 보여주는 (값)이라고 생각하시면 됩니다!

    enum State

    {

        None,

        Left,

        Right,

        Up,

        Down

    };


    private State mPlayerState = State.None;

    private State mColDir = State.None;


    private void Awake()

    {

        playerRigidbody = (Rigidbody2D)GetComponent(typeof(Rigidbody2D));

        anim = (Animator)GetComponent(typeof(Animator));

    }

// Update is called once per frame

void Update ()

    {

        // 방향키가 하나라도 입력이 되어 있을 경우

        if (Input.GetKey(KeyCode.LeftArrow)

            || Input.GetKey(KeyCode.RightArrow)

            || Input.GetKey(KeyCode.UpArrow)

            || Input.GetKey(KeyCode.DownArrow))

        {

            // 캐릭터 이동 방향을 지정한다.

            {

                if (Input.GetKey(KeyCode.LeftArrow))

                {

                    mPlayerState = State.Left;

                    anim.Play("Left");

                }

                

                if (Input.GetKey(KeyCode.RightArrow))

                {

                    mPlayerState = State.Right;

                    anim.Play("Right");

                }

                

                if (Input.GetKey(KeyCode.UpArrow))

                {

                    mPlayerState = State.Up;

                    anim.Play("Up");

                }


                if (Input.GetKey(KeyCode.DownArrow))

                {

                    mPlayerState = State.Down;

                    anim.Play("Down");

                }

                

            }


            // 충돌 방향이 아무것도 아닌 상태가 아니고 캐릭터가 이동하려는 방향과 충돌한 방향이 같을 경우 리턴을 한다.

            if (mColDir != State.None && mPlayerState == mColDir)

            {

                return;

            }


            // 충돌한 뱡향과 캐릭터가 이동하려는 방향이 다르면 캐릭터 이동을 처리한다.

            switch (mPlayerState)

            {

                case State.Left:

                    CharLeft();

                    break;


                case State.Right:

                    CharRight();

                    break;


                case State.Up:

                    CharUp();

                    break;


                case State.Down:

                    CharDown();

                    break;

            }

        }

    }


    // 나무와 충돌했을 때 이 함수가 호출

    private void OnTriggerEnter2D(Collider2D other)

    {

        // 충돌한 뱡향을 캐릭터가 이동한 뱡향으로 설정한다.

        mColDir = mPlayerState;

    }


    // 충돌에서 벗어 났을 때 이 함수가 호출

    private void OnTriggerExit2D(Collider2D other)

    {

        // 충돌에서 벗어났을 경우 아무것도 아닌 상태로 설정한다.

        mColDir = State.None;

    }

    void CharDown()

    {

        transform.Translate(0, -moveSpeed*Time.deltaTime, 0);


    }


    void CharUp()

    {

        transform.Translate(0, moveSpeed * Time.deltaTime, 0);

    }


    void CharLeft()

    {

        transform.Translate(-moveSpeed * Time.deltaTime, 0, 0);

    }


    void CharRight()

    {

        transform.Translate(moveSpeed * Time.deltaTime, 0, 0);

    }