鼠标实现物体拖动带拖尾的效果

今天,小编为大家分享一下,用鼠标拖动物体,还带一个小尾巴效果哈!【+V:Anime__King】

          1.新建一个unity项目,新建一个测试场景、一个MoveTo.cs类附加在GameObject(命名:MoveObjByMouse)上
 

          2.在MoveObjByMouse 必须要附加一个Mesh collider(而且包含一个材质)

 

         3.在MoveObjByMouse 添加一个子对象 SubTail,并且附上Trail Renderer组件
 

        4.然后,重要的一步来了。附上MoveTo.cs代码
[C#]  纯文本查看  复制代码
?
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using UnityEngine;
using System.Collections;
 
public class MoveTo : MonoBehaviour {
 
 
     //下面的函数是当鼠标触碰到碰撞体或者刚体时调用,我的碰撞体设置是mesh collider,然后别忘了,给这个collider添加物理材质
     //世界坐标系转化为屏幕坐标系,Z轴是不变的
     IEnumerator OnMouseDown()
     {
         //将物体由世界坐标系转化为屏幕坐标系        ,由vector3 结构体变量ScreenSpace存储,以用来明确屏幕坐标系Z轴的位置
         Vector3 ScreenSpace = Camera.main.WorldToScreenPoint(transform.position);
         //完成了两个步骤,1由于鼠标的坐标系是2维的,需要转化成3维的世界坐标系,2只有三维的情况下才能来计算鼠标位置与物体的距离,offset即是距离
         Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x, Input.mousePosition.y, ScreenSpace.z));
         //当鼠标左键按下时
         while (Input.GetMouseButton(0))
         {
             //得到现在鼠标的2维坐标系位置
             Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, ScreenSpace.z);
             //将当前鼠标的2维位置转化成三维的位置,再加上鼠标的移动量
             Vector3 CurPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;
             //CurPosition就是物体应该的移动向量赋给transform的position属性               
             transform.position = CurPosition;
             
             yield return new WaitForFixedUpdate();
         }
 
     }
}



     5.最后,当然是运行项目看效果啦!
 



QQ图片20160814001241.png (141.36 KB, 下载次数: 2)

QQ图片20160814001241.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值