学习内容:
此为Unity在游戏运行中对3D以及2D物体进行拖拽移动操作,仅作为笔记
以下是3D物体的移动操作代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class td : MonoBehaviour
{
Vector3 dist;
float posX;
float posY;
float posZ;
private void OnMouseDown()
{
dist = Camera.main.WorldToScreenPoint(transform.position);
posX = Input.mousePosition.x - dist.x;
posY = Input.mousePosition.y - dist.y;
posZ = Input.mousePosition.z - dist.z;
}
private void OnMouseDrag()
{
Vector3 curPos = new Vector3(Input.mousePosition.x - posX, Input.mousePosition.y - posY, Input.mousePosition.z - posZ);
Vector3 worldPos = Camera.main.ScreenToWorldPoint(curPos);
transform.position = worldPos;
}
}
以下是2D物体的移动操作代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class uitd : MonoBehaviour,IDragHandler ,IPointerDownHandler//后俩是接口
{
private Vector2 Pos;
public void OnDrag(PointerEventData eventData)
{
if (Input .GetMouseButton (0))
{
transform.position = eventData.position - Pos;
}
}
public void OnPointerDown(PointerEventData eventData)
{
Pos = eventData.position - (Vector2)transform.position;
}
}
在Unity中直接把编好的脚本赋给3D,2D物体,游戏运行并使用