¡¡GameManager¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Æ¡¢²èÌÌÆâ¤Î´³»ÙƱ»Î¤ò¥É¥é¥Ã¥°¡Ê¥¹¥ï¥¤¥×¡Ë¤·¤Æ¤Ä¤Ê¤²¤Æ¤¤¤¯½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¹ç¤ï¤»¤Æ¡¢°Û¤Ê¤ë´³»ÙƱ»Î¤¬¤Ä¤Ê¤¬¤é¤Ê¤¤¤è¤¦¤Ë¤âÀ©¸æ¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤½¤ÎÉôʬ¤â¥Ç¥Ð¥Ã¥°»þ¤Ë¤Ï³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡£²¤Ä°Ê¾å¤ÎƱ¤¸´³»Ù¤ò¤Ä¤Ê¤²¤Æ¡¢Á°¤Î´³»Ù¤Ë¥É¥é¥Ã¥°¤òÌᤷ¤¿¾ì¹ç¡¢¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤¿´³»ÙƱ»Î¤Î¤Ä¤Ê¤¬¤ê¤¬²ò½ü¤µ¤ì¤ë½èÍý¤â¼ÂÁõ¤·¤Þ¤¹¤Î¤Ç
¤³¤Á¤é¤â¥Ç¥Ð¥Ã¥°»þ¤Ë¤Ï˺¤ì¤º¤Ë³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£Î㤨¤Ð¡¢£³¤Ä¤Î´³»Ù¤¬¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë£²¤ÄÌܤδ³»Ù¤Ë¥É¥é¥Ã¥°¤òÌᤷ¤¿¾ì¹ç¡¢
£³¤ÄÌܤδ³»Ù¤¬ºï½ü¤ÎÂоݤ«¤é³°¤ì¤Æ¡Êºï½ü¥ê¥¹¥È¤«¤é½ü³°¤µ¤ì¤Æ¡Ë¡¢´³»Ù¤ÎÆ©ÌÀÅÙ¤¬¸µ¤ÎÆ©ÌÀÅÙ¤ËÌá¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
GameManager.cs
¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹¡£
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class GameManager : MonoBehaviour
{
// º£¤Þ¤Ç¤ÎÀë¸À¥Õ¥£¡¼¥ë¥É¤Ï¤½¤Î¤Þ¤Þ¤Ê¤Î¤Ç¾Êά
////* ¤³¤³¤«¤éÀë¸À¥Õ¥£¡¼¥ë¥É¤ËÄɲà *////
[Header("¥¹¥ï¥¤¥×¤Ç¤Ä¤Ê¤¬¤ë´³»Ù¤ÎÈÏ°Ï")]
public float etoDistance = 1.0f;
////* ¤³¤³¤Þ¤ÇÄɲà *////
IEnumerator Start() {
¡¡¡¡¡¡¡¡// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
¡¡¡¡}
private IEnumerator LoadEtoSprites(){
// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
private IEnumerator CreateEtos(int count) {
// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
¡¡¡¡void Update() {
// ´³»Ù¤ò¤Ä¤Ê¤²¤ë½èÍý
if (Input.GetMouseButtonDown(0) && firstSelectEto == null) {
// ´³»Ù¤òºÇ½é¤Ë¥É¥é¥Ã¥°¤·¤¿ºÝ¤Î½èÍý
OnStartDrag();
}
////* ¤³¤³¤«¤é½èÍý¤òÄɲà *////
else if (firstSelectEto != null) {
// ´³»Ù¤Î¥É¥é¥Ã¥°¡Ê¥¹¥ï¥¤¥×¡ËÃæ¤Î½èÍý
OnDragging();
}
////* ¤³¤³¤Þ¤ÇÄɲà *////
}
/// <summary>
/// ´³»Ù¤òºÇ½é¤Ë¥É¥é¥Ã¥°¤·¤¿ºÝ¤Î½èÍý
/// </summary>
private void OnStartDrag() {
¡¡¡¡¡¡¡¡// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
////* ¤³¤³¤«¤é¥á¥½¥Ã¥É¤ò£±¤ÄÄɲà *////
/// <summary>
/// ´³»Ù¤Î¥É¥é¥Ã¥°¡Ê¥¹¥ï¥¤¥×¡ËÃæ½èÍý
/// </summary>
private void OnDragging() {
// OnStartDrag¥á¥½¥Ã¥É¤ÈƱ¤¸½èÍý¤Ç¡¢»Ø¤Î°ÌÃÖ¤ò¥ï¡¼¥ë¥ÉºÂɸ¤ËÊÑ´¹¤·Ray¤òȯ¼Í¤·¡¢¤½¤Î°ÌÃ֤ˤ¢¤ë¥³¥é¥¤¥À¡¼¤ò»ý¤Ä¥ª¥Ö¥¸¥§¥¯¥È¤ò¼èÆÀ¤·¤ÆhitÊÑ¿ô¤ØÂåÆþ
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
// Ray¤ÎÌá¤êÃͤ¬¤¢¤ê(hitÊÑ¿ô¤¬null¤Ç¤Ï¤Ê¤¤)¡¢hitÊÑ¿ô¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬Eto¥¯¥é¥¹¤ò»ý¤Ã¤Æ¤¤¤¿¤é
if (hit.collider != null && hit.collider.gameObject.TryGetComponent(out Eto dragEto)) {
// ¸½ºßÁªÂòÃæ¤Î´³»Ù¤Î¼ïÎबnull¤Ê¤é½èÍý¤Ï¹Ô¤ï¤Ê¤¤
if (currentEtoType == null) {
return;
}
// dragEtoÊÑ¿ô¤Î´³»Ù¤Î¼ïÎबºÇ½é¤ËÁªÂò¤·¤¿´³»Ù¤Î¼ïÎà¤ÈƱ¤¸¤Ç¤¢¤ê¡¢ºÇ¸å¤Ë¥¿¥Ã¥×¤·¤Æ¤¤¤ë´³»Ù¤È¸½ºß¤Î´³»Ù¤¬°ã¤¦¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ê¡¢¤«¤Ä¡¢¸½ºß¤Î´³»Ù¤¬¤¹¤Ç¤Ë¡ÖÁªÂòÃæ¡×¤Ç¤Ê¤±¤ì¤Ð
if (dragEto.etoType == currentEtoType && lastSelectEto != dragEto && !dragEto.isSelected) {
// ¸½ºß¥¿¥Ã¥×¤·¤Æ¤¤¤ë´³»Ù¤Î°ÌÃÖ¾ðÊó¤ÈºÇ¸å¤Ë¥¿¥Ã¥×¤·¤¿´³»Ù¤Î°ÌÃÖ¾ðÊó¤ÈÈæ¤Ù¤Æ¡¢º¹Ê¬¤ÎÃÍ¡Ê´³»ÙÄ̤·¤Îµ÷Î¥¡Ë¤ò¼è¤ë
float distance = Vector2.Distance(dragEto.transform.position, lastSelectEto.transform.position);
// ´³»ÙƱ»Î¤Îµ÷Î¥¤¬ÀßÄêÃͤè¤ê¤â¾®¤µ¤±¤ì¤Ð(£²¤Ä¤Î´³»Ù¤¬Î¥¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð)¡¢´³»Ù¤ò¤Ä¤Ê¤²¤ë
if (distance < etoDistance) {
// ¸½ºß¤Î´³»Ù¤òÁªÂòÃæ¤Ë¤¹¤ë
dragEto.isSelected = true;
// ºÇ¸å¤ËÁªÂò¤·¤Æ¤¤¤ë´³»Ù¤ò¸½ºß¤Î´³»Ù¤Ë¹¹¿·
lastSelectEto = dragEto;
// ´³»Ù¤Î¤Ä¤Ê¤¬¤Ã¤¿¿ô¤Î¥«¥¦¥ó¥È¤ò£±¤ÄÁý¤ä¤¹
linkCount++;
// ´³»Ù¤ËÄ̤·ÈÖ¹æ¤òÀßÄê
dragEto.num = linkCount;
// ºï½ü¥ê¥¹¥È¤Ë¸½ºß¤Î´³»Ù¤òÄɲÃ
AddEraseEtolList(dragEto);
}
}
// ¸½ºß¤Î´³»Ù¤Î¼ïÎà¤ò³Îǧ(¸½ºß¤Î´³»Ù(dragEto¤Î¾ðÊó¤Ç¤¢¤ì¤Ð¡¢Â¾¤Î¾ðÊó¤Ç¤â¤è¤¤¡£¤Á¤ã¤ó¤ÈÁªÂò¤µ¤ì¤Æ¤¤¤ë¤«¤Î³ÎǧÍÑ))
Debug.Log(dragEto.etoType);
// ºï½ü¥ê¥¹¥È¤Ë£²¤Ä°Ê¾å¤Î´³»Ù¤¬Äɲ䵤ì¤Æ¤¤¤ë¾ì¹ç
if (eraseEtoList.Count > 1) {
// ¸½ºß¤Î´³»Ù¤ÎÄ̤·ÈÖ¹æ¤ò³Îǧ
Debug.Log(dragEto.num);
// ¾ò·ï¤Ë¹çÃפ¹¤ë¾ì¹ç¡¢ºï½ü¥ê¥¹¥È¤«¤é´³»Ù¤ò½ü³°¤¹¤ë(¥É¥é¥Ã¥°¤·¤¿¤Þ¤Þ£±¤ÄÁ°¤Î´³»Ù¤ÎÌá¤ë¾ì¹ç¡¢¸½ºß¤Î´³»Ù¤òºï½ü¥ê¥¹¥È¤«¤é½ü³°¤¹¤ë)
if (eraseEtoList[linkCount - 1] != lastSelectEto && eraseEtoList[linkCount - 1].num == dragEto.num && dragEto.isSelected) {
// ÁªÂòÃæ¤Î¥Ü¡¼¥ë¤ò¼è¤ê½ü¤¯
RemoveEraseEtoList(lastSelectEto);
lastSelectEto.GetComponent<Eto>().isSelected = false;
// ºÇ¸å¤Î¥Ü¡¼¥ë¤Î¾ðÊó¤ò¡¢Á°¤Î¥Ü¡¼¥ë¤ËÌ᤹
lastSelectEto = dragEto;
// ¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤ë´³»Ù¤Î¿ô¤ò¸º¤é¤¹
linkCount--;
}
}
}
}
////* ¤³¤³¤Þ¤ÇÄɲà *////
private void AddEraseEtolList(Eto dragEto) {
// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
////* ¤³¤³¤«¤é¥á¥½¥Ã¥É¤ò£±¤ÄÄɲà *////
/// <summary>
/// Á°¤Î´³»Ù¤ËÌá¤Ã¤¿ºÝ¤Ëºï½ü¥ê¥¹¥È¤«¤éºï½ü
/// </summary>
/// <param name="dragEto"></param>
private void RemoveEraseEtoList(Eto dragEto) {
// ºï½ü¥ê¥¹¥È¤«¤éºï½ü
eraseEtoList.Remove(dragEto);
// ´³»Ù¤ÎÆ©ÌÀÅÙ¤ò¸µ¤ÎÃÍ(1.0f)¤ËÌ᤹
ChangeEtoAlpha(dragEto, 1.0f);
// ´³»Ù¤Î¡ÖÁªÂòÃæ¡×¤Î¾ðÊó¤¬true¤Î¾ì¹ç
if (dragEto.isSelected) {
// false¤Ë¤·¤ÆÁªÂòÃæ¤Ç¤Ï¤Ê¤¤¾õÂÖ¤ËÌ᤹
dragEto.isSelected = false;
}
}
////* ¤³¤³¤Þ¤ÇÄɲà *////
private void ChangeEtoAlpha(Eto dragEto, float alphaValue) {
// Êѹ¹¤Ê¤·¤¿¤á¾Êά
}
}