如何自己手写一个滚动惯性

  • Creator 版本:2.4.4
    在cc.ScrollView中自带滚动惯性,但是由于寻路算法和其他一些的干扰就没用上ScrollView,单纯的用触摸方式移动摄像机,给人一种拖动地图的感觉。现在需要在拖动结束放手的时候写一个ScrollView的滚动惯性效果。这方法要如何实现

效果需求: 实现手指拖动地图后,手指离开地图后,地图距离会向着手指的方向移动一段距离
以下是拖动的代码:


拖动的时候记录方向,然后拖动结束的时候给个tween或者其他什么的,不就行了?

找到一个类似需求的,但是不知道怎么改写到cc里面去https://blog.csdn.net/luoyikun/article/details/48573849

方向要咋记录,记录cc.v2吗?

对啊,记录两个坐标点,一个是开始,一个结束,看差值

我大概可以想到,但是写不出来。这个方法一开始我试过 :sob:

你找找看有没有类似的吧,我这么干说也说不清楚


            cc.tween(new cc.Node())
                .by(
                    1,
                    { position: cc.v3(0, 50) },
                    {
                        easing: cc.easing.backOut
                    }
                )
                .start();

easing 可以自行替换效果

1赞

大佬,如果在这个tween生效时间内又滑动呢?

要不试试看用插值来做惯性???


1赞

大佬!这个可以用,谢谢

用缓动的话我好像需要去计算时间和终点位置,我就是被这个给难住了

要终点有什么用?时间就是你填的参数,如果要无死角移动就只需要向量减法和单位化

我去消化一下

touchEnd坐标减去touchStart坐标,单位化后乘以你想要的惯性滚动距离就得到了相对于当前坐标移动的距离

2赞

自己计算y值做为速度,update里面用速度*时间 自己做滚动的位置差

1赞