Libgdx学习笔记:照相机的平滑拖动和缩放效果

不知道线性插值的,自行百度。

    核心代码:

// 缩放平滑因子

private float zoomSmothFactor = 5f;

// 滑动

private float moveSmothFactor = 12f;

Vector2 oldZoomVector = new Vector2(0, 1);

Vector2 newZoomVector = new Vector2(0, 1f);

Vector2 oldPositionVector = new Vector2();

Vector2 newPositionVector = new Vector2();

public void check(){

// 使用线性内插,起到平顺过度的效果

oldZoomVector.lerp(newZoomVector, zoomSmothFactor * Math.min(0.05f, deltaTime));

if (newPositionVector.x != 0 || newPositionVector.y != 0) {

oldPositionVector.lerp(newPositionVector, moveSmothFactor * Math.min(0.06f, deltaTime));

}

camera.position.x = oldPositionVector.x;

camera.position.y = oldPositionVector.y;

camera.zoom = oldZoomVector.y;

}

@Override

public boolean zoom(float initialDistance, float distance) {

//与pinch对应,也是是一个多点触摸的手势,并且两个手指做出放大的动作

float zoomFactor = initialDistance / distance;

newZoomVector.y = zoomFactor;

return false;

}

在每次绘制前或后,调用check()方法即可。上面的影响因子,可自行调节,以达到最优效果。

时间: 2024-11-05 14:31:36

Libgdx学习笔记:照相机的平滑拖动和缩放效果的相关文章

Libgdx学习笔记: 游戏如何在androidx86 2.2的vbox虚拟机测试运行

这个问题我花了一天半的时间才解决,换了无数个libgdx的版本,0.98.0.99 1.0 还有最新未发布的版本都测试了,虚拟机的版本也换了很多个,都不行 最后总结出来. vBox虚拟机上的androidx86 无论哪个版本,至少我测试的2.2 4.0 4.1 都无法成功运行 libgdx 的opengl es2.0版本的程序 先说下我为什么一定要虚拟机,因为androidAVD带的模拟器不能多个模拟器进行socket交互,我说的是超过2个,只有2个可以端口映射,3个以上就没办法了,而现在我做的

【学习笔记】jQuery中的动画与效果

1.基本效果 匹配元素从左上角开始变浓变大或缩小到左上角变淡变小 ①隐藏元素 除了可以设置匹配元素的display:none外,可以用以下函数 hide(speed,[callback])  返回值:jQuery  参数-speed:三种预订速度之一的字符串String(slow,normal,fast)或表示动画时长的毫秒数Number  callback:在完成动画时执行的函数,每个匹配元素执行一次 slow=600毫秒  normal=400毫秒  fast=200毫秒 以优雅的动画隐藏所

Libgdx学习笔记:Simple text input

官方Wiki:https://github.com/libgdx/libgdx/wiki/Simple-text-input 实现接口TextInputListener public class MyTextInputListener implements TextInputListener {       @Override    public void input (String text) {    }       @Override    public void canceled () 

Libgdx学习笔记:封装自己的Actor

为什么要去封装我们自己的Actor? 答:Actor本身可能无法满足我们的开发需求,或者无法支持各种各样的效果,由此需要在其基础上进行拓展. 下面贴出本人二次封装的CHActor代码,供大家参考:   1.CHActor使用了对象缓存池,自动管理释放,很好的解决了游戏中使用大量对象导致帧数较低的问题.    2.自行设置绘制的纹理,而不必使用Image.创建过多的Image会导致帧数下降的很厉害.   3.可自由继承CHActor,方便自己再次扩展. 用法: CHActor chactor  =

Libgdx学习笔记:自己封装各种粒子特效

实现的思路:缓存池+(Image或者CHActor) + Actions 例:实现星星右中心点向圆形周围扩散,且星星不断的旋转,缩小,到达圆上时消失. 这个需求里面对于单个星星包含的Action有: moveTo 移动 roatateBy 旋转 scaleTo 缩小 我们使用Actions.parallel(...)来同时执行上面三个Action.当然我们再执行上面所有Action还需要加上最后的RunnableAction.用来处理粒子结束后的其他工作(释放星星对象到缓存池). 单个星星的运动

OpenCV学习笔记——多种Smooth平滑处理

opencv库提供了好几种模糊平滑Smooth操作的类型作为cvSmooth的参数传入,从而达到不同的平滑效果,另外复习了一下如何复制一份图像和重新调整图像大小. 调整图像大小目前是按照一下步骤进行: 1.先cvcreate一个新的图像,cvcreate中的参数设为调整之后的大小(用Cvsize的构造函数封装代入) 2.然后再用cvresize把原图像输入到刚才构造的已设定好尺寸的图像中 代码: #include<cv.h> #include<highgui.h> //多种smoo

Libgdx学习笔记:使用Action做定时器

在Gdx中,定时器可以使用Timer来实现,如: Timer timer = new Timer(); Task timerTask = new Task() { @Override public void run() { } }; timer.scheduleTask(timerTask, 0, 1, 20);// 0s之后执行,每次间隔1s,执行20次. 下面我们使用Action来实现上面的效果: Action[] sAction = new Action[20];// 一共执行20次 //

Libgdx学习笔记:Scene2d之Group

UI组件之Group 当Group旋转或缩放时,它的孩子们正常绘制,并且Batch变换后正确的旋转或缩放. 绘制Group前,Batch flush使得变换可以设置.有很多Group时这将可能成为性能瓶颈.如果在一组演员不旋转或缩放,然后settransform(false)可用于Group.当这样做,每个孩子的位置基于Group的位置进行绘制,使孩子们出现在正确的位置,即使没有转换. Group继承自Actor,是2D场景绘制的节点,包含了很多其他演员: 每个演员都有一个 z-order 等于

Android学习笔记--使用Apache HttpClient实现网络下载效果,附带进度条显示

今天学习 了Apache 写了一个网络下载的效果,代码如下,代码中我已经写了很详细的注释了,相信大家都能看懂 1 http://m.blog.csdn.net/article/details?id=52927536 2 3 4 package com.wuxianedu.httpdemo; 5 6 import android.app.ProgressDialog; 7 import android.content.Intent; 8 import android.net.Uri; 9 impo