using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 拼图控制
///
public class MoveCurtains : MonoBehaviour
{
//执行此选择
bool isSelected;
float distanceRay; //定位点击时计算
GameObject piece; //分配点击时,将移动。
Transform[] piecesMove;
//[HideInInspector]
//public float positionZ = -0.001f;
[HideInInspector]
public bool puzzlePlaying;
Vector3 offset;
GameObject lightC;
public float positionX = 0f;
public float positionY = 0f;
public float positionZ = 0f;
Vector3 positionL;
//数字资源整合
[Header("SFX")]
public AudioSource clickSFX;
public GameObject menu;
public bool acitve = true;
public bool c5r = false;
public bool c5l = false;
public bool duoA = false;
public bool duo2A = false;
public bool C3A = false;
private void Start()
{
}
void Update()
{
//鼠标信息
//按下鼠标
if (Input.GetMouseButtonDown(0))
{
TouchClick();
}
//移动鼠标
if (isSelected)
{
MovePiece();
}
//释放鼠标
if (Input.GetMouseButtonUp(0))
{
FreePiece();
}
}
///
/// 定位点击点
///
void TouchClick()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //从相机到点的触控点
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{ //接收触控,如果有击中目标
//print(hit.collider.transform.parent.tag);
if (hit.collider.gameObject.tag == "shui")
{
distanceRay = hit.distance;
piece = hit.collider.gameObject;
offset = hit.point - hit.collider.gameObject.transform.position;
isSelected = true;
}
else if (hit.collider.gameObject.transform.parent &&
(
(hit.collider.gameObject.transform.parent.name == "group" && hit.collider.transform.parent.tag == "shui") ||
(hit.collider.gameObject.transform.parent.name == "group2" && hit.collider.transform.parent.tag == "shui") ||
(hit.collider.gameObject.transform.parent.name == "group3" && hit.collider.transform.parent.tag == "shui") ||
(hit.collider.gameObject.transform.parent.name == "group4" && hit.collider.transform.parent.tag == "shui")
)
)
{
distanceRay = hit.distance;
piece = hit.collider.gameObject.transform.parent.gameObject;
offset = hit.point - hit.collider.gameObject.transform.parent.position;
isSelected = true;
}
else
{
isSelected = false;
}
}
}
///
/// 移动碎片(每帧调用)
///
void MovePiece()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 limitRay = ray.GetPoint(distanceRay);
limitRay = new Vector3(limitRay.x, limitRay.y, limitRay.z);
piece.transform.position = limitRay - offset;
}
///
/// 释放碎片
///
void FreePiece()
{
if (isSelected)
{
GameObject C2 = GameObject.Find("group/C2");
float C2X = C2.transform.position.x;
float C2Y = C2.transform.position.y;
float C2Z = C2.transform.position.z;
GameObject ai = GameObject.Find("group2/ai");
float aiX = ai.transform.position.x;
float aiY = ai.transform.position.y;
float aiZ = ai.transform.position.z;
GameObject C1 = GameObject.Find("group3/C1");
float C1X = C1.transform.position.x;
float C1Y = C1.transform.position.y;
float C1Z = C1.transform.position.z;
GameObject C4 = GameObject.Find("group4/C4");
float C4X = C4.transform.position.x;
float C4Y = C4.transform.position.y;
float C4Z = C4.transform.position.z;
if (piece.name == "C5")
{
if (
(C2X - piece.transform.position.x < 2.18f && C2X - piece.transform.position.x > 1.18f) &&
(C2Y - piece.transform.position.y < -1.45f && C2Y - piece.transform.position.y > -2.45f) &&
(C2Z - piece.transform.position.z < 0.5f && C2Z - piece.transform.position.z > -0.5f) && !c5r
)
{
piece.transform.SetParent(C2.transform.parent);
piece.transform.position = new Vector3(C2X - 1.68f, C2Y + 1.95f, C2Z);
clickSFX.Play();
c5r = true;
piece.tag = piece.name;
}
else if (
(C2X - piece.transform.position.x < -1.18f && C2X - piece.transform.position.x > -2.18f) &&
(C2Y - piece.transform.position.y < -1.45f && C2Y - piece.transform.position.y > -2.45f) &&
(C2Z - piece.transform.position.z < 0.5f && C2Z - piece.transform.position.z > -0.5f) && !c5l
)
{
piece.transform.SetParent(C2.transform.parent);
piece.transform.position = new Vector3(C2X + 1.68f, C2Y + 1.95f, C2Z);
clickSFX.Play();
c5l = true;
piece.tag = piece.name;
}
}
if (piece.name == "group3")
{
if (
(C2X - piece.transform.position.x < -0.68f && C2X - piece.transform.position.x > -1.68f) &&
(C2Y - piece.transform.position.y < -2.7f && C2Y - piece.transform.position.y > -3.7f) &&
(C2Z - piece.transform.position.z < 0.5f && C2Z - piece.transform.position.z > -0.5f) && c5l && c5r
)
{
piece.transform.SetParent(C2.transform.parent);
piece.transform.position = new Vector3(C2X + 1.18f, C2Y + 3.2f, C2Z);
clickSFX.Play();
piece.tag = "TempTag";
}
}
if (piece.name == "tou")
{
if (
(aiX - piece.transform.position.x < 0.5f && aiX - piece.transform.position.x > -0.5f) &&
(aiY - piece.transform.position.y < -0.45f && aiY - piece.transform.position.y > -1.45f) &&
(aiZ - piece.transform.position.z < 0.5f && aiZ - piece.transform.position.z > -0.5f)
)
{
piece.transform.SetParent(ai.transform.parent);
piece.transform.position = new Vector3(aiX, aiY + 0.95f, aiZ);
clickSFX.Play();
piece.tag = piece.name;
}
}
if (piece.name == "screen")
{
if (
(aiX - piece.transform.position.x < 0.5f && aiX - piece.transform.position.x > -0.5f) &&
(aiY - piece.transform.position.y < 0.5f && aiY - piece.transform.position.y > -0.5f) &&
(aiZ - piece.transform.position.z < 0.5f && aiZ - piece.transform.position.z > -0.5f)
)
{
piece.transform.SetParent(ai.transform.parent);
piece.transform.position = new Vector3(aiX, aiY, aiZ + 0.1f);
clickSFX.Play();
piece.tag = piece.name;
}
}
if (piece.name == "tuozhan")
{
if (
(aiX - piece.transform.position.x < 0.5f && aiX - piece.transform.position.x > -0.5f) &&
(aiY - piece.transform.position.y < 0.5f && aiY - piece.transform.position.y > -0.5f) &&
(aiZ - piece.transform.position.z < 0.5f && aiZ - piece.transform.position.z > -0.5f)
)
{
piece.transform.SetParent(ai.transform.parent);
piece.transform.position = new Vector3(aiX, aiY, aiZ - 0.1f);
clickSFX.Play();
piece.tag = piece.name;
}
}
if (piece.name == "group2")
{
if (
(C1X - piece.transform.position.x < -1.15f && C1X - piece.transform.position.x > -2.15f) &&
(C1Y - piece.transform.position.y < 0.6f && C1Y - piece.transform.position.y > -0.6f) &&
(C1Z - piece.transform.position.z < 0.5f && C1Z - piece.transform.position.z > -0.5f)
)
{
piece.transform.SetParent(C1.transform.parent);
piece.transform.position = new Vector3(C1X + 1.65f, C1Y - 0.14f, C1Z + 0.06f);
clickSFX.Play();
piece.tag = "TempTag";
}
}
if (piece.name == "duo1")
{
if (
(C1X - piece.transform.position.x < -2.5f && C1X - piece.transform.position.x > -3.5f) &&
(C1Y - piece.transform.position.y < 0.1f && C1Y - piece.transform.position.y > -0.9f) &&
(C1Z - piece.transform.position.z < 0.5f && C1Z - piece.transform.position.z > -0.5f)
)
{
piece.transform.SetParent(C1.transform.parent);
piece.transform.position = new Vector3(C1X+3, C1Y+0.445f, C1Z);
clickSFX.Play();
piece.tag = piece.name;
duoA = true;
}
}
if (piece.name == "cur")
{
if (
(C2X - piece.transform.position.x < 0.5f && C2X - piece.transform.position.x > -0.5f) &&
(C2Y - piece.transform.position.y < -1.35f && C2Y - piece.transform.position.y > -2.35f) &&
(C2Z - piece.transform.position.z < 0.3f && C2Z - piece.transform.position.z > -0.75f) && c5l && c5r
)
{
piece.transform.SetParent(C2.transform.parent);
piece.transform.position = new Vector3(C2X , C2Y + 1.85f, C2Z + 0.26f);
clickSFX.Play();
piece.tag = piece.name;
}
}
if (piece.name == "duo2")
{
if (
(C4X - piece.transform.position.x < -0.5f && C4X - piece.transform.position.x > -1.75f) &&
(C4Y - piece.transform.position.y < 1.2f && C4Y - piece.transform.position.y > 0.2f) &&
(C4Z - piece.transform.position.z < 0.5f && C4Z - piece.transform.position.z > -0.5f)
)
{
piece.transform.SetParent(C4.transform.parent);
piece.transform.position = new Vector3(C4X + 1.24f, C4Y - 0.7f, C4Z + 0.06f);
clickSFX.Play();
duo2A = true;
piece.tag = piece.name;
}
}
if (piece.name == "C3")
{
if (
(C4X - piece.transform.position.x < 3.35f && C4X - piece.transform.position.x > 2.35f) &&
(C4Y - piece.transform.position.y < 0.5f && C4Y - piece.transform.position.y > -0.5f) &&
(C4Z - piece.transform.position.z < 0.5f && C4Z - piece.transform.position.z > -0.5f)
)
{
piece.transform.SetParent(C4.transform.parent);
piece.transform.position = new Vector3(C4X - 2.85f, C4Y+ 0.03f, C4Z);
clickSFX.Play();
C3A = true;
piece.tag = piece.name;
}
}
if (piece.name == "C6")
{
if (
(C4X - piece.transform.position.x < 4.51f && C4X - piece.transform.position.x > 3.61f) &&
(C4Y - piece.transform.position.y < 1.07f && C4Y - piece.transform.position.y > 0.17f) &&
(C4Z - piece.transform.position.z < 0.5f && C4Z - piece.transform.position.z > -0.5f) && C3A
)
{
piece.transform.SetParent(C4.transform.parent);
piece.transform.position = new Vector3(C4X - 4.11f, C4Y - 0.67f, C4Z);
clickSFX.Play();
piece.tag = piece.name;
}
}
if (piece.name == "group4")
{
if (
(C1X - piece.transform.position.x < -1.1f && C1X - piece.transform.position.x > -2.1f) &&
(C1Y - piece.transform.position.y < -0.9f && C1Y - piece.transform.position.y > -1.9f) &&
(C1Z - piece.transform.position.z < 0.3f && C1Z - piece.transform.position.z > -0.7f) && duo2A && duoA
)
{
piece.transform.SetParent(C1.transform.parent);
piece.transform.position = new Vector3(C1X + 1.6f, C1Y + 1.4f, C1Z + 0.2f);
clickSFX.Play();
piece.tag = "TempTag";
}
}
if (C2.transform.parent.childCount == 5 && acitve && ai.transform.parent.childCount == 4 && C1.transform.parent.childCount == 4 && C4.transform.parent.childCount == 4)
{
//Instantiate(menu, GameObject.FindGameObjectWithTag("UI").transform);
acitve = false;
}
else
{
acitve = true;
}
isSelected = false;
}
}
}