纳金网

标题: C#脚本实现鼠标拖动物体 [打印本页]

作者: 王者再临    时间: 2015-2-27 01:19
标题: C#脚本实现鼠标拖动物体
C#脚本实现鼠标拖动物体
  1. using System.Collections;

  2. public class clickmove : MonoBehaviour {

  3. // Use this for initialization

  4. void Start () {

  5. }

  6. // Update is called once per frame

  7. void Update () {

  8. }

  9. //下面的函数是当鼠标触碰到碰撞体或者刚体时调用,我的碰撞体设置是mesh collider,然后别忘了,给这个collider添加物理材质

  10. //值得注意的是世界坐标系转化为屏幕坐标系,Z轴是不变的

  11. IEnumerator OnMouseDown()

  12. {

  13. //将物体由世界坐标系转化为屏幕坐标系 ,由vector3 结构体变量ScreenSpace存储,以用来明确屏幕坐标系Z轴的位置

  14. Vector3 ScreenSpace = Camera.main.WorldToScreenPoint(transform.position);

  15. //完成了两个步骤,1由于鼠标的坐标系是2维的,需要转化成3维的世界坐标系,2只有三维的情况下才能来计算鼠标位置与物体的距离,offset即是距离

  16. Vector3 offset = transform.position-Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,ScreenSpace.z));

  17. Debug.Log(“down”);

  18. //当鼠标左键按下时

  19. while(Input.GetMouseButton(0))

  20. {

  21. //得到现在鼠标的2维坐标系位置

  22. Vector3 curScreenSpace =  new Vector3(Input.mousePosition.x,Input.mousePosition.y,ScreenSpace.z);

  23. //将当前鼠标的2维位置转化成三维的位置,再加上鼠标的移动量

  24. Vector3 CurPosition = Camera.main.ScreenToWorldPoint(curScreenSpace)+offset;

  25. //CurPosition就是物体应该的移动向量赋给transform的position属性

  26. transform.position = CurPosition;

  27. //这个很主要

  28. yield return new WaitForFixedUpdate();

  29. }

  30. }

  31. }
复制代码





欢迎光临 纳金网 (http://www.narkii.com/club/) Powered by Discuz! X2.5