using UnityEngine;
using System.Collections;
public class Demo : MonoBehaviour {
private Vector3 pos;
private Camera cam;
// Use this for initialization
void Start () {
cam = GameObject.FindGameObjectWithTag("SceneCamera").GetComponent<Camera>();
}
// Update is called once per frame
void Update () {
}
void OnEnable(){
UIEventListener.Get (gameObject).onPress += Press_gameObject;
UIEventListener.Get (gameObject).onDrag += Drag_gameObject;
}
void OnDisable(){
UIEventListener.Get (gameObject).onPress -= Press_gameObject;
UIEventListener.Get (gameObject).onDrag -= Drag_gameObject;
}
#region Delegate
//整体思路
//由于delta是屏幕坐标系的,所以移动的操作要在屏幕坐标系下进行,这样的话就把transform转换成屏幕坐标系,然后在转换成世界坐标系
void Press_gameObject(GameObject o,bool isPressed){
if (isPressed) {
//先把transform的世界坐标转换成屏幕坐标
pos = cam.WorldToScreenPoint(transform.position);
}
else{
}
}
void Drag_gameObject(GameObject o,Vector2 delta){
//delta是屏幕坐标系的
pos = new Vector3 (pos.x + delta.x, pos.y + delta.y, pos.z);
//屏幕坐标系转换成世界坐标系
transform.position = cam.ScreenToWorldPoint (pos);
}
using System.Collections;
public class Demo : MonoBehaviour {
private Vector3 pos;
private Camera cam;
// Use this for initialization
void Start () {
cam = GameObject.FindGameObjectWithTag("SceneCamera").GetComponent<Camera>();
}
// Update is called once per frame
void Update () {
}
void OnEnable(){
UIEventListener.Get (gameObject).onPress += Press_gameObject;
UIEventListener.Get (gameObject).onDrag += Drag_gameObject;
}
void OnDisable(){
UIEventListener.Get (gameObject).onPress -= Press_gameObject;
UIEventListener.Get (gameObject).onDrag -= Drag_gameObject;
}
#region Delegate
//整体思路
//由于delta是屏幕坐标系的,所以移动的操作要在屏幕坐标系下进行,这样的话就把transform转换成屏幕坐标系,然后在转换成世界坐标系
void Press_gameObject(GameObject o,bool isPressed){
if (isPressed) {
//先把transform的世界坐标转换成屏幕坐标
pos = cam.WorldToScreenPoint(transform.position);
}
else{
}
}
void Drag_gameObject(GameObject o,Vector2 delta){
//delta是屏幕坐标系的
pos = new Vector3 (pos.x + delta.x, pos.y + delta.y, pos.z);
//屏幕坐标系转换成世界坐标系
transform.position = cam.ScreenToWorldPoint (pos);
}