记录两个unity画面内拖拽实用脚本
二维场景任意位置拖动刚体
using UnityEngine;
using System.Collections;
public class dragSprite : MonoBehaviour {
private bool clickedOn;
private Ray rayToMouse;
private float mouseDownX = .0f;
private float mouseDownY = .0f;
private float mouseOffsetX = .0f;
private float mouseOffsetY = .0f;
void Awake () {
}
void Start () {
}
void Update () {
if (clickedOn)
Dragging ();
}
void OnMouseDown () {
clickedOn = true;
mouseDownX = Input.mousePosition.x;
mouseDownY = Input.mousePosition.y;
mouseOffsetX = Camera.main.WorldToScreenPoint(this.transform.position).x - mouseDownX;
mouseOffsetY = Camera.main.WorldToScreenPoint(this.transform.position).y - mouseDownY;
}
void OnMouseUp () {
clickedOn = false;
}
void Dragging () {
this.GetComponent<Rigidbody2D>().velocity = new Vector3(0,0,0);//必须重置加速度 不然未掉落接住 速度还是不变的
Vector3 fixMousePosition = new Vector3(mouseOffsetX,mouseOffsetY,0);
Vector3 mouseWorldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition+fixMousePosition);
mouseWorldPoint.z = 0f;//转换坐标会造成z不归0
transform.position = mouseWorldPoint;
}
}
sprite中心拖动代码
using UnityEngine;
using System.Collections;
public class dragSprite : MonoBehaviour {
private bool clickedOn;
private Ray rayToMouse;
void Awake () {
}
void Start () {
}
void Update () {
if (clickedOn)
Dragging ();
}
void OnMouseDown () {
clickedOn = true;
}
void OnMouseUp () {
clickedOn = false;
}
void Dragging () {
Vector3 mouseWorldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mouseWorldPoint.z = 0f;
transform.position = mouseWorldPoint;
}
}