背景
上一篇通过鼠标移动的代码很简单,所以看的人也不多,但是还是要感谢“武装三藏”在博客园给出的评论和支持,希望他也能看到第二篇,其实可以很简单,而且是精灵自控制,关键是代码少是我喜欢的方式,也再次印证了Unity3d的复杂性(同样的功能多次封装),代码如下:
public class DebugTest : MonoBehaviour
{
RectTransform m_Rect;
void Start ()
{
m_Rect = GetComponent();
}
void Update()
{
if(Input.GetMouseButtonUp(0))
{
m_Rect.position = Input.mousePosition;
}
}
}
效果如下(由于效果基本相似,接上一篇的预览图):
这一篇主要解决上一篇最后提出的问题,也就是通过这样鼠标移动物体时不够平滑的,不管有多远都是瞬移过去的,视觉体验不够优秀。
本文旨在通过Update中逐帧移动。达到平滑移动的效果
原理
1、记录鼠标点击的点,这个点是如果是屏幕坐标
2、将这个屏幕坐标转换成世界坐标
3、使用鼠标的世界坐标-精灵的世界坐标||也可以使用鼠标的本地坐标-精灵的本地坐标
4、通过3获得移动方向,做插值在Update