您的位置:首页 > 移动开发 > Unity3D

Unity拖动摄像机加上惯性滑动的效果

2015-11-17 10:50 801 查看
最近项目里有这个需求,在网上搜了一圈,没找到非常合适的解决方法,不过提供了一个很有用的思路。之前代码里是用获取点位置然后移动摄像机,还有一种思路是获取点击位置的移动速度。最后我的在项目里的解决方式是把这两种结合起来,移动的时候用位置,当手指离开时就用速度,然后再递减到0就可以做出这个效果了。虽然代码还是很烂。

//这个方法放在Update里执行
private void HandleMouseInput ()
{
//按下时记录位置
if (Input.GetMouseButtonDown(0))
{
_prevPosition = Input.mousePosition;
startMousePosition = Input.mousePosition;
}
//移动时更新位置
if (Input.GetMouseButton (0)) {
Vector2 curMousePosition = Input.mousePosition;
MoveCamera (_prevPosition, curMousePosition);
_prevPosition = curMousePosition;
inertia = (Camera.ScreenToWorldPoint(_prevPosition) - Camera.ScreenToWorldPoint(startMousePosition));
}
else   //最后递减
{
currentSpeed = -inertia*Time.deltaTime;
if (Mathf.Abs(inertia.y) > 0.2f)
inertia -= (inertia/10);
else
inertia = Vector3.zero;
transform.position += currentSpeed;
transform.position = ApplyBounds(transform.position);
//Debug.Log("inertia" + inertia);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity