합치기 게임류 처럼 만들려고하는데 지금 코드는 합치기 구현이 됬거든 근데..10번에1~2번 정도 합쳐지지 않아 다름 등급으로 안올라간다


정확히는 1등급 2개를 합치면 2등급이 되야하는데 간혹가다 1등급만 남고 나머지 1등급짜리가 삭제되..


혹시 합치기는거 튜토리얼 아는거 있음 도움좀 줬으면 좋겠어 


혹시 몰라 전체 코드 올림 


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


[RequireComponent(typeof(Rigidbody2D))]

[RequireComponent(typeof(SpriteRenderer))]

[RequireComponent(typeof(BoxCollider2D))]


public class Stone : MonoBehaviour

{


    private bool _mouseState = false;

    private GameObject target;

    private GameObject btnUp_target;

    private Vector3 MousePos;

    private int level;

    private SpriteRenderer sprite_renderer;

    Rigidbody2D body2d;

    BoxCollider2D box2d;

    SpriteManager spriteManager;


    public int Level

    {

        get

        {

            return level;

        }

        set

        {

            level = value;

            if (level > spriteManager.stone_sprites.Length)

                level = spriteManager.stone_sprites.Length;

            sprite_renderer.sprite = spriteManager.stone_sprites[Level];

        }

    }


    void Awake()

    {

        sprite_renderer = GetComponent<SpriteRenderer>();

        body2d = GetComponent<Rigidbody2D>();

        box2d = GetComponent<BoxCollider2D>();

        spriteManager = SpriteManager.instance;

    }

    void Start()

    {

        body2d.gravityScale = 0;

        transform.localScale = new Vector3(4, 4, 4);

        box2d.size = new Vector2(0.2f, 0.2f);

        Level = 0;

        sprite_renderer.sprite = spriteManager.stone_sprites[Level];


    }


    void OnMouseDown()

    {

        target = GetClickedObject();


       if (target != null)

        {

            _mouseState = true;

        }


        box2d.isTrigger = true;

    }


    void OnMouseDrag()

    {

        if (_mouseState)

        {

            MousePos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0));

            target.transform.position = new Vector3(MousePos.x, MousePos.y, target.transform.position.z);

        }

    }


    void OnMouseUp()

    {

        _mouseState = false;

        

   Vector2 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

      

        Ray2D ray2D = new Ray2D(pos, Vector2.zero);


        RaycastHit2D[] hit = Physics2D.RaycastAll(ray2D.origin, ray2D.direction);


        if(hit.Length > 1)

        {

            for (int i = 1; i < hit.Length; ++i)

            {

                if (Level == hit[i].collider.GetComponent<Stone>().Level)

                {

                    hit[i].collider.GetComponent<Stone>().Level++;

                    Destroy(gameObject);

                }

            }

        }


        box2d.isTrigger = false;

    }



    private GameObject GetClickedObject()

    {


        GameObject target = null;

        Vector2 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        Ray2D ray2D = new Ray2D(pos, Vector2.zero);

        RaycastHit2D hit = Physics2D.Raycast(ray2D.origin, ray2D.direction);


        if (hit.collider != null)

        {

            target = hit.collider.gameObject;

        }


        return target;

    }


}