직접 도트를 그리고 pixel per unit을 1으로 맞춘 다음 scale는 안 건드렸습니다 ㅠ


원래 잘 움직이던 캐릭터가 그래비티 스케일이 작은 값일 때도 갑자기 잘 안 움직입니다 ㅠ 도와주시면 감사드리겠습니다 ㅠㅠ


아래는 도트 이미지 설정 창이랑 플레이어 인스펙터 창입니다 ㅠ


image.png

image.png


이건 제가 쓴 플레이어 움직임에 관한 스크립트 입니다 ㅠ



 void FixedUpdate()

    {

        float h = Input.GetAxisRaw("Horizontal");


        rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);


        if (rigid.velocity.x > maxSpeed) // Right max Speed

            rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);

        else if (rigid.velocity.x < maxSpeed * (-1)) // Left Max Speed

            rigid.velocity = new Vector2(maxSpeed * (-1), rigid.velocity.y);

    }



이렇게 있고 이건 제가 플레이어에 대해 쓴 스크립트 전체 입니다



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class Playermove : MonoBehaviour

{

    public float maxSpeed;

    public float JumpPower;

    bool isJumping;

    Rigidbody2D rigid;

    SpriteRenderer spriteRenderer;

    public GameManager gameManager;

    CapsuleCollider2D capsuleCollider;


    

    void Awake()

    {

        rigid = GetComponent<Rigidbody2D>();

        spriteRenderer = GetComponent<SpriteRenderer>();

        capsuleCollider = GetComponent<CapsuleCollider2D>();

        isJumping = false;

    }


    private void Update()

    {

        //flip.x   Direction

        if (Input.GetButton("Horizontal"))

            spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == - 1;


        //Jump , // 무한 점프 막기 

        if (Input.GetButtonDown("Jump") && ! isJumping)

            rigid.AddForce(Vector2.up * JumpPower, ForceMode2D.Impulse);

                isJumping = true;


        //Raycast 사물 인식을 이용한 Landing PlatForm 기능 구현하기, isJumping = false;

        Debug.DrawRay(rigid.position, Vector3.down, new Color(0, 1, 0));


        RaycastHit2D rayHit = Physics2D.Raycast(rigid.position, Vector3.down, 1, LayerMask.GetMask("PlatForm"));


        if (rayHit.collider != null && isJumping)

        {

            if (rayHit.distance < 1f)

                Debug.Log(rayHit.collider.name);

            isJumping = false;


        }



        //Stop Player

        if (Input.GetButtonUp("Horizontal"))

            rigid.velocity = new Vector2(rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);

    }


    void FixedUpdate()

    {

        float h = Input.GetAxisRaw("Horizontal");


        rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);


        if (rigid.velocity.x > maxSpeed) // Right max Speed

            rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);

        else if (rigid.velocity.x < maxSpeed * (-1)) // Left Max Speed

            rigid.velocity = new Vector2(maxSpeed * (-1), rigid.velocity.y);

    }


    void OnCollisionEnter2D(Collision2D collision)

    {

        

            if (collision.gameObject.tag == "Enemy")

        {

            //Atack

            if (rigid.velocity.y < 0 && rigid.transform.position.y > collision.transform.position.y)

            {

                OnAttack(collision.transform);

            }


            else

            {

                OnDameged(collision.transform.position);

            }

        }

        

            

        

    }



    void OnTriggerEnter2D(Collider2D collision)


    {

        if (collision.gameObject.tag == "Item")

        {


            bool isBronze = collision.gameObject.name.Contains("Bronze");

            bool isSilver = collision.gameObject.name.Contains("Silver");

            bool isGold = collision.gameObject.name.Contains("Gold");


            if (isBronze)

                gameManager.totalPoint += 1;

            else if (isSilver)

                gameManager.totalPoint += 5;

            else if (isGold)

                gameManager.totalPoint += 30;



            //DeActive item 


            collision.gameObject.SetActive(false);


        }



        // if player fisnish, this is one of the option 

        else if (collision.gameObject.tag == "Finish NPC - 1" )

        {

            // Next Stage 

            gameManager.Nextstage();

        }

    }



    void OnDameged(Vector2 targetpos)

    {

        //health down

        gameManager.Healthdown();




        //Change Layer 

        gameObject.layer = 9;


        //View Alpha

        Color color = spriteRenderer.color;


        color.a = 0.5f;

        spriteRenderer.color = color;


        int indic = transform.position.x - targetpos.x > 0 ? 1 : -1;


        rigid.AddForce(new Vector2(indic, 2) * 8.4f, ForceMode2D.Impulse);


        Invoke("OffDameged", 2.8f);

    }


    void OnAttack (Transform enemy)

    {

      //Point


        // ReactionForce

        rigid.AddForce(Vector2.up * 15.6f, ForceMode2D.Impulse);


        // Enemy Die

        Enemymove enemyMove = enemy.GetComponent<Enemymove>();

       

        enemyMove.OnDameged();

    }

        void OffDameged ()


    {

        gameObject.layer = 8;

        Color color = spriteRenderer.color;

        color.a = 1;

        spriteRenderer.color = color;


    }


    public void OnDie( )

    {

        spriteRenderer.flipY = true;


        spriteRenderer.color = new Color(1, 1, 1, 0.4f);


        capsuleCollider.enabled = false;


        rigid.AddForce(Vector2.up * 5, ForceMode2D.Impulse);

    }


    public void VelocityZero( )

    {

        rigid.velocity = Vector2.zero;

    }


}