◆ 필요한 기능
오브젝트 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 |
---|