본문 바로가기
게임 기획/Game Programming

[Unity/유니티] 유니티 오브젝트 합치기 (merge objects)

by 또리바리 2024. 11. 17.

 

◆ 필요한 기능

오브젝트 a 와 b 를 합쳐 c 를 만드는 기능 (a 와 b 는 합치면 소멸됨)

 

 

 

기본 규칙

단계 오브젝트
1 All_0
2 All_1
3 All_2
... ...

 

리소스

오브젝트

Rigidbody2D, Collider2D 추가

- 카메라 화면 내에서만 조합할 경우, 중력값 0 으로 변경하여 화면에서 떨어지지 않도록 함

- Collider 추가 하지 않으면 아래 스크립트 작동하지 않음

- Collider 내에 Is Trigger 값 체크표시하여 허용 해야함

 

 

코드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MergeObject : MonoBehaviour
{
    private Vector2 mousePosition;

    private float offsetX, offsetY;

    public static bool mouseButtonReleased;

    private void OnMouseDown()
    {
        mouseButtonReleased = false;
        offsetX = Camera.main.ScreenToWorldPoint(Input.mousePosition).x - transform.position.x;
        offsetY = Camera.main.ScreenToWorldPoint(Input.mousePosition).y - transform.position.y;
    }

    private void OnMouseDrag()
    {
        mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        transform.position = new Vector2(mousePosition.x - offsetX, mousePosition.y - offsetY);
    }

    private void OnMouseUp()
    {
        mouseButtonReleased = true;
    }

    private void OnTriggerStay2D(Collider2D collision)
    {
        string thisGameObjectName;
        string collisionGameObjectName;

        thisGameObjectName = gameObject.name.Substring(0, name.IndexOf("_"));
        collisionGameObjectName = collision.gameObject.name.Substring(0, name.IndexOf("_"));

        if (mouseButtonReleased && thisGameObjectName == "All_0" && thisGameObjectName == collisionGameObjectName)
        {
            Instantiate(Resources.Load("All_1"), transform.position, Quaternion.identity);
            mouseButtonReleased = false;
            Destroy(collision.gameObject);
            Destroy(gameObject);
        }
        else if (mouseButtonReleased && thisGameObjectName == "All_1" && thisGameObjectName == collisionGameObjectName)
        {
            Instantiate(Resources.Load("All_2"), transform.position, Quaternion.identity);
            mouseButtonReleased = false;
            Destroy(collision.gameObject);
            Destroy(gameObject);
        }
    }
}

 

 

'게임 기획 > Game Programming' 카테고리의 다른 글

[Unity/유니티] 유니티 드래그 앤 드롭  (0) 2024.11.17