代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class DragCreate : MonoBehaviour
{
public GameObject Cube;
public GameObject Place;
/// <summary>
/// 按下响应
/// </summary>
public void PointerDown()
{
OnBeginDrag();
}
/// <summary>
/// 开始拖拽
/// </summary>
public void OnBeginDrag()
{
GameObject game = Instantiate(Cube);
game.SetActive(true);
generateGame = game;
float distance = Camera.main.transform.InverseTransformPoint(Place.transform.position).z;
generateGame.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,
Input.mousePosition.y, distance));
generateGame.transform.rotation = Place.transform.rotation;
Place.SetActive(true);
}
private GameObject generateGame;
/// <summary>
/// 进行拖拽
/// </summary>
public void OnDrag()
{
float distance = Camera.main.transform.InverseTransformPoint(Place.transform.position).z;
generateGame.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,
Input.mousePosition.y, distance));
}
/// <summary>
/// 结束拖拽
/// </summary>
public void OnEndDrag()
{
if (generateGame.transform.position.x > Place.transform.position.x - 0.3f
&& generateGame.transform.position.x < Place.transform.position.x + 0.3f
&& generateGame.transform.position.y > Place.transform.position.y - 0.3f
&& generateGame.transform.position.y < Place.transform.position.y + 0.3f)
{
Place.SetActive(false);
generateGame.transform.position = Place.transform.position;
}
else
{
Place.SetActive(false);
Destroy(generateGame);
}
}
}
脚本挂载和层级:
![](https://img-blog.csdnimg.cn/acd0f2145e5b43fb8c2f1f1ca05aa8de.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p6X5re1Lg==,size_20,color_FFFFFF,t_70,g_se,x_16)
?
|