查看: 712|回复: 0
打印 上一主题 下一主题

[其他] C#脚本实现鼠标拖动物体

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2015-2-27 01:19:42 |只看该作者 |倒序浏览
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. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-1 00:11 , Processed in 0.082492 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部