using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 拼图控制
///
public class MoveCar : 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;
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 == "GrupoPiezas" ||
(hit.collider.gameObject.transform.parent.name == "f1group1" && hit.collider.transform.parent.tag == "shui") ||
(hit.collider.gameObject.transform.parent.name == "f1group2" && hit.collider.transform.parent.tag == "shui") ||
(hit.collider.gameObject.transform.parent.name == "f2group" && hit.collider.transform.parent.tag == "shui") ||
(hit.collider.gameObject.transform.parent.name == "f3group" && hit.collider.transform.parent.tag == "shui") ||
(hit.collider.gameObject.transform.parent.name == "aigroup" && hit.collider.transform.parent.tag == "shui") ||
(hit.collider.gameObject.transform.parent.name == "lun" && 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 f2 = GameObject.Find("f2group/f2");
float f2positionX = f2.transform.position.x;
float f2positionY = f2.transform.position.y;
float f2positionZ = f2.transform.position.z;
GameObject f11 = GameObject.Find("f1group1/f1");
float f11positionX = f11.transform.position.x;
float f11positionY = f11.transform.position.y;
float f11positionZ = f11.transform.position.z;
GameObject f12 = GameObject.Find("f1group2/f1");
float f12positionX = f12.transform.position.x;
float f12positionY = f12.transform.position.y;
float f12positionZ = f12.transform.position.z;
if (piece.name == "f1group1")
{
if (
(f2positionX - piece.transform.position.x < 0.5f && f2positionX - piece.transform.position.x > -0.5f) &&
(f2positionY - piece.transform.position.y < -0.4f && f2positionY - piece.transform.position.y > -1.4f) &&
(f2positionZ - piece.transform.position.z < -0.5f && f2positionZ - piece.transform.position.z > -1.5f)
)
{
piece.transform.SetParent(f2.transform.parent);
piece.transform.position = new Vector3(f2positionX, f2positionY + 0.9f, f2positionZ + 1f);
clickSFX.Play();
piece.tag = "TempTag";
}
}
if (piece.name == "f1group2")
{
if (
(f2positionX - piece.transform.position.x < 0.5f && f2positionX - piece.transform.position.x > -0.5f) &&
(f2positionY - piece.transform.position.y < -0.4f && f2positionY - piece.transform.position.y > -1.4f) &&
(f2positionZ - piece.transform.position.z < 1.5f && f2positionZ - piece.transform.position.z > 0.5f)
)
{
piece.transform.SetParent(f2.transform.parent);
piece.transform.position = new Vector3(f2positionX, f2positionY + 0.9f, f2positionZ - 1f);
clickSFX.Play();
piece.tag = "TempTag";
}
}
if (piece.name == "duo1")
{
if (
(f11positionX - piece.transform.position.x < 0.5f && f11positionX - piece.transform.position.x > -1.5f) &&
(f11positionY - piece.transform.position.y < 1.3f && f11positionY - piece.transform.position.y > -0.7f) &&
(f11positionZ - piece.transform.position.z < 1.3f && f11positionZ - piece.transform.position.z > -0.7f)
)
{
piece.transform.SetParent(f11.transform.parent);
piece.transform.position = new Vector3(f11positionX + 0.52f, f11positionY - 0.3f, f11positionZ - 0.3f);
clickSFX.Play();
piece.tag = piece.name;
}
}
if (piece.name == "duo2")
{
if (
(f12positionX - piece.transform.position.x < 0.5f && f12positionX - piece.transform.position.x > -1.5f) &&
(f12positionY - piece.transform.position.y < 1.3f && f12positionY - piece.transform.position.y > -0.7f) &&
(f12positionZ - piece.transform.position.z < 0.7f && f12positionZ - piece.transform.position.z > -1.3f)
)
{
piece.transform.SetParent(f12.transform.parent);
piece.transform.position = new Vector3(f12positionX + 0.52f, f12positionY - 0.3f, f12positionZ + 0.3f);
clickSFX.Play();
piece.tag = piece.name;
}
}
isSelected = false;
}
}
}