Unity3d 实现用鼠标拖拽鼠标

原创 2012年03月30日 13:11:40

实现用鼠标拖拽鼠标  鼠标进入物体改变物体颜色

using UnityEngine;
using System.Collections;

public class clickObj : MonoBehaviour {
	
	public Texture2D[] pic = new Texture2D[4];
	private Color c;
	private Texture origPic;
	private int index;
	
	private Vector3 screenPoint;
	private Vector3 scanPos;
	private Vector3 offset;
	private Vector3 origPos;
	
	static public bool bDrag;
	// Use this for initialization
	void Start () {
		c = renderer.material.color;
		origPic = renderer.material.mainTexture;
		//pic = new Texture2D[4];
		index = 0;
		scanPos = this.transform.position;
		origPos = scanPos;
		bDrag = false;
	}
	
	// Update is called once per frame
	void Update () {
	
	}
	void OnMouseDown(){
		print("Mouse down");
		renderer.material.color = c;
		renderer.material.mainTexture = pic[index];
		index++;
		if (index == 3)
			index = 0;
		
		/////
		screenPoint = Camera.main.WorldToScreenPoint(scanPos);
  	    offset = scanPos - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
		Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
	    Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
		//print(curPosition);
	    transform.position = curPosition;
	}
	void OnMouseEnter(){
		print("Mouse enter");
		index = 0;
		renderer.material.color = Color.red;
	}
	void OnMouseExit(){
		print("Mouse exit");
		renderer.material.color = c;
		renderer.material.mainTexture = origPic;
	}
	
	void OnMouseDrag()
	{
		bDrag = true;
	    Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
	    Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
	    transform.position = curPosition;
		print("curPosition"+curPosition);
	}
	
	void OnMouseUp(){
		print("mouse up");
		//transform.TransformPoint(origPos);
		bDrag = false;
		transform.position = origPos;
	}

}


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Unity中鼠标左键按下,拖拽物体移动

把这段脚本拖给想要拖拽的物体,然后加上碰撞盒就可以了。   private Vector3 _vec3TargetScreenSpace;// 目标物体的屏幕空间坐标 private V...
  • Haohan_Meng
  • Haohan_Meng
  • 2014年01月20日 14:23
  • 38492

unity3D C#脚本实现鼠标拖动物体

using System.Collections; public class clickmove : MonoBehaviour { // Use this for initializa...
  • tc1hen
  • tc1hen
  • 2013年01月02日 20:26
  • 23410

Unity3D鼠标拖拽绕任意轴旋转的实现

  • 2014年09月27日 22:06
  • 15KB
  • 下载

Unity3D中拖动物体移动脚本

  • 2013年10月11日 19:25
  • 889B
  • 下载

Unity UGUI 实现简单拖拽功能

这一篇博客我们来使用 UGUI 实现图片的拖拽功能。 说到拖拽,那必然离不开坐标,UGUI 的坐标有点不一样,它有两种坐标,一种是屏幕坐标,还有一种就是 UI 在Canvas内的坐标(暂时叫做ugu...
  • u014230923
  • u014230923
  • 2016年05月09日 13:39
  • 14621

unity3D C#脚本实现鼠标拖动物体

using System.Collections;      public class clickmove : MonoBehaviour {          // Use this for...
  • huang9012
  • huang9012
  • 2014年05月28日 14:08
  • 4778

Unity3D中鼠标拖拽物体

using System.Collections; using UnityEngine; public class MoveMouse : MonoBehaviour {     //下面的函...
  • u012842807
  • u012842807
  • 2015年09月22日 17:52
  • 1792

unity背包系统中物体拖拽效果实现(初学者)

一般背包系统中,物品是依附在格子里面,即物品为格子的子物体。物品拖拽时主要是将物品拿出,跟随鼠标移动,判断落点位置完成拖拽:如果鼠标释放终点位置下检测到的是空格子,就把物体放在空格子下;如果鼠标释放终...
  • u012761191
  • u012761191
  • 2016年09月05日 11:30
  • 4080

Unity3D鼠标选中物品并拖动物品的方法

这个方法不是作一个射线来PICK物品。是用了U3D中一个比较方便的API来实现的,非常简单。 int speed = 10; void OnMouseDrag () { transform....
  • dzyi_
  • dzyi_
  • 2014年06月30日 15:56
  • 6245

用OnMouseMove()消息可以实现鼠标的拖动功能

afx_msg void OnMouseMove(   UINT nFlags,   CPoint point   );   当鼠标移动时调用此函数 。  ...
  • ilikehigame
  • ilikehigame
  • 2014年04月09日 16:51
  • 1331
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3d 实现用鼠标拖拽鼠标
举报原因:
原因补充:

(最多只允许输入30个字)