cocos2dx ​​Animate3D(二)

Twirl

扭曲旋转特效
请添加图片描述

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列 
// 扭曲中心位置 
// 扭曲的数量 
// 振幅 
static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude);

源码

void Twirl::update(float time)
{
    int i, j;
    Vec2    c = _position;
    
    for (i = 0; i < (_gridSize.width+1); ++i)
    {
        for (j = 0; j < (_gridSize.height+1); ++j)
        {
            Vec3 v = getOriginalVertex(Vec2(i ,j));
            
            Vec2 avg(i-(_gridSize.width/2.0f), j-(_gridSize.height/2.0f));
            float r = avg.getLength();
            
            float amp = 0.1f * _amplitude * _amplitudeRate;
            float a = r * cosf( (float)M_PI/2.0f + time * (float)M_PI * _twirls * 2 ) * amp;
            
            Vec2 d(
                sinf(a) * (v.y-c.y) + cosf(a) * (v.x-c.x),
                cosf(a) * (v.y-c.y) - sinf(a) * (v.x-c.x));
            
            v.x = c.x + d.x;
            v.y = c.y + d.y;

            setVertex(Vec2(i ,j), v);
        }
    }
}

示例

cc.Twirl:create(2, cc.size(12,8), cc.p(size.width/2, size.height/2), 1, 2.5)

ShakyTiles3D

瓷砖晃动特效
请添加图片描述

// 持续时间(时间过后不会回到原来的样子) 
// 整个屏幕被分成几行几列 
// 晃动的范围 
// z轴是否晃动 
static ShakyTiles3D* create(float duration, const Size& gridSize, int range, bool shakeZ);

源码

void ShakyTiles3D::update(float /*time*/)
{
    int i, j;

    for (i = 0; i < _gridSize.width; ++i)
    {
        for (j = 0; j < _gridSize.height; ++j)
        {
            Quad3 coords = getOriginalTile(Vec2(i, j));

            // X
            coords.bl.x += ( rand() % (_randrange*2) ) - _randrange;
            coords.br.x += ( rand() % (_randrange*2) ) - _randrange;
            coords.tl.x += ( rand() % (_randrange*2) ) - _randrange;
            coords.tr.x += ( rand() % (_randrange*2) ) - _randrange;

            // Y
            coords.bl.y += ( rand() % (_randrange*2) ) - _randrange;
            coords.br.y += ( rand() % (_randrange*2) ) - _randrange;
            coords.tl.y += ( rand() % (_randrange*2) ) - _randrange;
            coords.tr.y += ( rand() % (_randrange*2) ) - _randrange;

            if (_shakeZ)
            {
                coords.bl.z += ( rand() % (_randrange*2) ) - _randrange;
                coords.br.z += ( rand() % (_randrange*2) ) - _randrange;
                coords.tl.z += ( rand() % (_randrange*2) ) - _randrange;
                coords.tr.z += ( rand() % (_randrange*2) ) - _randrange;
            }
                        
            setTile(Vec2(i, j), coords);
        }
    }
}

示例

cc.ShakyTiles3D:create(t, cc.size(16,12), 5, false)

ShatteredTiles3D

破碎的3D瓷砖特效

请添加图片描述

// 持续时间(时间过后不会回到原来的样子) 
// 整个屏幕被分成几行几列
// 晃动的范围 
// z轴是否晃动 
static ShatteredTiles3D* create(float duration, const Size& gridSize, int range, bool shatterZ);

源码

void ShatteredTiles3D::update(float /*time*/)
{
    int i, j;

    if (_once == false)
    {
        for (i = 0; i < _gridSize.width; ++i)
        {
            for (j = 0; j < _gridSize.height; ++j)
            {
                Quad3 coords = getOriginalTile(Vec2(i ,j));
                
                // X
                coords.bl.x += ( rand() % (_randrange*2) ) - _randrange;
                coords.br.x += ( rand() % (_randrange*2) ) - _randrange;
                coords.tl.x += ( rand() % (_randrange*2) ) - _randrange;
                coords.tr.x += ( rand() % (_randrange*2) ) - _randrange;
                
                // Y
                coords.bl.y += ( rand() % (_randrange*2) ) - _randrange;
                coords.br.y += ( rand() % (_randrange*2) ) - _randrange;
                coords.tl.y += ( rand() % (_randrange*2) ) - _randrange;
                coords.tr.y += ( rand() % (_randrange*2) ) - _randrange;

                if (_shatterZ) 
                {
                    coords.bl.z += ( rand() % (_randrange*2) ) - _randrange;
                    coords.br.z += ( rand() % (_randrange*2) ) - _randrange;                
                    coords.tl.z += ( rand() % (_randrange*2) ) - _randrange;
                    coords.tr.z += ( rand() % (_randrange*2) ) - _randrange;
                }
                
                setTile(Vec2(i, j), coords);
            }
        }
        
        _once = true;
    }
}

示例

cc.ShatteredTiles3D:create(t, cc.size(16,12), 5, false)

ShuffleTiles

瓷砖洗牌特效

请添加图片描述

// 持续时间(时间过后不会回到原来的样子) 
// 整个屏幕被分成几行几列 
// 随即速度基数(即会用此值作为底数来随机产生值) 
static ShuffleTiles* create(float duration, const Size& gridSize, unsigned int seed);

源码

void ShuffleTiles::update(float time)
{
    Tile *tileArray = (Tile*)_tiles;

    for (int i = 0; i < _gridSize.width; ++i)
    {
        for (int j = 0; j < _gridSize.height; ++j)
        {
            tileArray->position = Vec2((float)tileArray->delta.width, (float)tileArray->delta.height) * time;
            placeTile(Vec2(i, j), tileArray);
            ++tileArray;
        }
    }
}

示例

local shuffle = cc.ShuffleTiles:create(t, cc.size(16,12), 25)
local shuffle_back = shuffle:reverse()
local delay = cc.DelayTime:create(2)

return cc.Sequence:create(shuffle, shuffle_back, delay)

FadeOutTRTiles、FadeOutBLTiles、FadeOutUpTiles、FadeOutDownTiles

  • FadeOutTRTiles :淡出效果,从左下角到右上角
  • FadeOutBLTiles :淡出效果,从右上角到左下角
  • FadeOutUpTiles :折叠效果,从下到上
  • FadeOutDownTiles :折叠效果,从上到下

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

// 时间
// 网格大小 
static FadeOutTRTiles* create(float duration, const Size& gridSize);
static FadeOutBLTiles* create(float duration, const Size& gridSize);
static FadeOutUpTiles* create(float duration, const Size& gridSize);
static FadeOutDownTiles* create(float duration, const Size& gridSize);

示例

local function FadeOutTRTilesDemo(t)
    local fadeout = cc.FadeOutTRTiles:create(t, cc.size(16,12))
    local back = fadeout:reverse()
    local delay = cc.DelayTime:create(0.5)

    return cc.Sequence:create(fadeout, back, delay)
end

local function FadeOutBLTilesDemo(t)
    local fadeout = cc.FadeOutBLTiles:create(t, cc.size(16,12))
    local back = fadeout:reverse()
    local delay = cc.DelayTime:create(0.5)

    return cc.Sequence:create(fadeout, back, delay)
end

local function FadeOutUpTilesDemo(t)
    local fadeout = cc.FadeOutUpTiles:create(t, cc.size(16,12))
    local back = fadeout:reverse()
    local delay = cc.DelayTime:create(0.5)

    return cc.Sequence:create(fadeout, back, delay)
end

local function FadeOutDownTilesDemo(t)
    local fadeout = cc.FadeOutDownTiles:create(t, cc.size(16,12))
    local back = fadeout:reverse()
    local delay = cc.DelayTime:create(0.5)

    return cc.Sequence:create(fadeout, back, delay)
end

TurnOffTiles

方块消失特效
请添加图片描述

// 持续时间(时间过后不会回到原来的样子) 
// 整个屏幕被分成几行几列
static TurnOffTiles* create(float duration, const Size& gridSize);
// seed 随即速度基数(即会用此值作为底数来随机产生值)
static TurnOffTiles* create(float duration, const Size& gridSize, unsigned int seed);

示例

local function TurnOffTilesDemo(t)
    local fadeout = cc.TurnOffTiles:create(t, cc.size(48,32), 25)
    local back = fadeout:reverse()
    local delay = cc.DelayTime:create(0.5)

    return cc.Sequence:create(fadeout, back, delay)
end

WavesTiles3D

瓷砖波浪特效
请添加图片描述

// 持续时间(时间过后不会回到原来的样子) 
// 整个屏幕被分成几行几列
// 波动的速率 
// 振幅
static WavesTiles3D* create(float duration, const Size& gridSize, unsigned int waves, float amplitude);

示例

local function WavesTiles3DDemo(t)
    return cc.WavesTiles3D:create(t, cc.size(15,10), 4, 120)
end

JumpTiles3D

3D效果tiles跳跃
请添加图片描述

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列
// 跳几下
// 振幅
static JumpTiles3D* create(float duration, const Size& gridSize, unsigned int numberOfJumps, float amplitude);

示例

local function JumpTiles3DDemo(t)
    return cc.JumpTiles3D:create(t, cc.size(15,10), 2, 30)
end

SplitRows、SplitCols

  • SplitRows 分多行消失特效
  • SplitCols 分多列消失特效
    请添加图片描述
    请添加图片描述
// 时间
// 行数或者列数
 static SplitRows* create(float duration, unsigned int rows);
 static SplitCols* create(float duration, unsigned int cols);

示例

local function SplitRowsDemo(t)
    return cc.SplitRows:create(t, 9)
end

local function SplitColsDemo(t)
    return cc.SplitCols:create(t, 9)
end

PageTurn3D

3D翻页特效,从右下角往左上角翻
请添加图片描述

// 时间
// 网格大小 
static PageTurn3D* create(float duration, const Size& gridSize);

示例

local function PageTurn3DDemo(t)
    cc.Director:getInstance():setDepthTest(true)
    return cc.PageTurn3D:create(t, cc.size(15,10))
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/178829.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode:622. 设计循环队列 题解【具详细】

目录 一、题目&#xff1a; 二、思路详解&#xff1a; 1.循环队列的存储定义 2.循环队列的创建 3.循环队列的判空与判断情况 (1) 循环队列的判空: (2) 循环队列的判满 4.循环队列元素的插入 5.循环队列元素的删除 6.获取队头元素 7.获取队尾元素 8.循环队列释放 三…

frp内网穿透配置以及相关端口、过程解释

介绍 假设现有外网笔记本、云服务器、内网工作站三台设备&#xff0c;希望使用外网笔记本通过云服务器转发&#xff0c;访问内网工作站&#xff1b;这里使用frp进行内网穿透。 云服务器端配置 登录腾讯轻量型云服务器控制台&#xff0c;开放转发端口、bind_port以及deshboad…

CSDN等级权益概览

文章目录 一、[权益概览](https://blog.csdn.net/SoftwareTeacher/article/details/114499372)二、权益详情&#xff08;更新中...&#xff09;2.1、等级权益2.2、原创保护2.3、推广管理2.4、博客皮肤 一、权益概览 级别对应分数解释权益未定级0这类用户没有做任何贡献。或者曾…

EMG肌肉信号处理合集 (一)

本文归纳了常见的肌肉信号预处理流程&#xff0c;方便EMG信号的后续分析。使用pyemgpipeline库 来进行信号的处理。文中使用了 UC Irvine 数据库的下肢数据。 目录 1 使用wrappers 定义数据类&#xff0c;来进行后续的操作 2 肌电信号DC偏置去除 3 带通滤波器处理 4 对肌电…

Windows安装Hadoop运行环境

1、下载Hadoop 2、解压Hadoop tar zxvf hadoop-3.1.1.tar.gz3、设置Hadoop环境变量 3.1.1、系统环境变量 # HADOOP_HOME D:\software\hadoop-3.1.13.1.2、Path 环境变量 %HADOOP_HOME%\bin %HADOOP_HOME%\sbin3.1.3、修改Hadoop文件JAVA_HOME 注 : 路径中不要出现空格 ,…

原理Redis-SkipList

SkipList ZipList和QuickList的共同特点是节省内存。在遍历元素时&#xff0c;只能从头到尾或从尾到头&#xff0c;所以在查找头尾元素性能还是不错的&#xff0c;但是中间元素查询的性能就会差。 **SkipList&#xff08;跳表&#xff09;**首先是链表&#xff0c;但与传统链表…

阿里云99元服务器ECS经济型e实例性能如何?测评来了

阿里云服务器优惠99元一年&#xff0c;配置为云服务器ECS经济型e实例&#xff0c;2核2G配置、3M固定带宽和40G ESSD Entry系统盘&#xff0c;CPU采用Intel Xeon Platinum架构处理器&#xff0c;2.5 GHz主频&#xff0c;3M带宽下载速度384KB/秒&#xff0c;上传速度1028KB/秒&am…

链表OJ--上

文章目录 前言一、反转链表二、移除链表元素三、链表中倒数第K个结点四、相交链表五、链表的中间结点 前言 一、反转链表 力扣206&#xff1a;反转链表- - -点击此处传送 思路图&#xff1a; 方法一&#xff1a;改变指向 方法二&#xff1a; 代码&#xff1a; //方法一 /…

BLE通用广播包

文章目录 1、蓝牙广播数据格式2、扫描响应数据 1、蓝牙广播数据格式 蓝牙广播包的最大长度是37个字节&#xff0c;其中设备地址占用了6个字节&#xff0c;只有31个字节是可用的。这31个可用的字节又按照一定的格式来组织&#xff0c;被分割为n个AD Structure。如下图所示&…

【11月比赛合集】48场可报名的数据挖掘大奖赛,任君挑选!

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 Kaggle&#xff08;9场比赛&#xff09;阿里天池&#xff08;…

Java计算时间差,距结束还有几天几小时几分钟

文章目录 1、写法2、备份3、LocalDate、LocalDateTime、Date、String互转 1、写法 //静态方法&#xff0c;传入年月日时分秒 LocalDateTime startTime LocalDateTime.of(2023, 11, 22, 15, 09, 59); LocalDateTime endTime LocalDateTime.of(2023, 11, 30, 0, 0, 0); //计算…

华清远见嵌入式学习——网络编程——作业4

作业要求&#xff1a;①使用IO多路复用中的select函数实现TCP并发服务器客户端 ②使用IO多路复用中的poll函数实现TCP并发服务器的服务器端 一、 代码 #include <myhead.h>#define SERPORT 8888 //服务器端口号 #define SERIP "192.168.114.113"…

PCIE链路训练-状态跳转1

A&#xff1a;12ms超时&#xff0c;或者再任何lane上检测到Electrical Idle Exit&#xff1b; B&#xff1a; 1.发送“receiver detection”之后没有一个lane的接收逻辑被rx检测到 2.不满足条件c&#xff0c;比如两次detection出现差别&#xff1b; C&#xff1a;发送端在没…

数据分析基础之《matplotlib(1)—介绍》

一、什么是matplotlib 1、专门用于开发2D图表&#xff08;包括3D图表&#xff09; 2、使用起来及其简单 3、以渐进、交互方式实现数据可视化 4、matplotlib mat&#xff1a;matrix&#xff08;矩阵&#xff09; plot&#xff1a;画图 lib&#xff1a;库 二、为什么要学习m…

万界星空科技SMT行业生产管理MES系统解决方案

一、SMT行业特点&#xff1a; SMT&#xff08;Surface Mounted Technology&#xff09;作为电子组装行业里首先的技术和工艺&#xff0c;选择合适的MES解决方案来保障SMT生产的成功至关重要。 电子行业涉及的范围非常广&#xff0c;包含了汽车、电脑、电视、手机等产品上&…

SPASS-ARIMA模型

基本概念 在预测中,对于平稳的时间序列,可用自回归移动平均(AutoRegres- sive Moving Average, ARMA)模型及特殊情况的自回归(AutoRegressive, AR)模型、移动平均(Moving Average, MA)模型等来拟合,预测该时间序列的未来值,但在实际的经济预测中,随机数据序列往往…

【uni-app】uniapp中弹出输入框的示例

uni.showModal({title: 请输入企业名称,content: ,editable: true, //是否显示输入框placeholderText: 请输入企业名称, //输入框提示内容confirmText: 确认,cancelText: 取消,success: (res) > {if (res.confirm) {this.checkDesc.name res.content;// console.log(输入的…

使用Pytorch从零开始构建DCGAN

在本文中&#xff0c;我们将深入研究生成建模的世界&#xff0c;并使用流行的 PyTorch 框架探索 DCGAN&#xff08;生成对抗网络 (GAN) 的一种变体&#xff09;的实现。具体来说&#xff0c;我们将使用 CelebA 数据集&#xff08;名人面部图像的集合&#xff09;来生成逼真的合…

【技巧】PDF文件如何编辑?

日常办公中我们经常会用到PDF文件&#xff0c;PDF具备很好的兼容性、稳定性及安全性&#xff0c;但却不容易编辑&#xff0c;那PDF要如何编辑呢&#xff1f; 如果打开PDF文件就只是只读的性质&#xff0c;说明文件是在线打开&#xff0c;或者通过PDF阅读器打开的&#xff0c;这…

AIGC,ChatGPT AI绘画 Midjourney 注册流程详细步骤

AI 绘画,Midjourney完成高清图片绘制,轻松掌握AI工具。 前期准备: ① 一个能使用的谷歌账号 ② 可以访问外网 Midjourney注册 1.进入midjourney官网https://www.midjourney.com 点击左下角”Join the Beta”,就可以注册,第一次使用的小伙伴会弹出提示,只需要点击Acc…